Thanks for using Compiler Explorer
Sponsors
Jakt
C++
Ada
Algol68
Analysis
Android Java
Android Kotlin
Assembly
C
C3
Carbon
C with Coccinelle
C++ with Coccinelle
C++ (Circle)
CIRCT
Clean
Clojure
CMake
CMakeScript
COBOL
C++ for OpenCL
MLIR
Cppx
Cppx-Blue
Cppx-Gold
Cpp2-cppfront
Crystal
C#
CUDA C++
D
Dart
Elixir
Erlang
Fortran
F#
GLSL
Go
Haskell
HLSL
Helion
Hook
Hylo
IL
ispc
Java
Julia
Kotlin
LLVM IR
LLVM MIR
Modula-2
Mojo
Nim
Numba
Nix
Objective-C
Objective-C++
OCaml
Odin
OpenCL C
Pascal
Pony
PTX
Python
Racket
Raku
Ruby
Rust
Sail
Snowball
Scala
Slang
Solidity
Spice
SPIR-V
Swift
LLVM TableGen
Toit
Triton
TypeScript Native
V
Vala
Visual Basic
Vyper
WASM
Yul (Solidity IR)
Zig
Javascript
GIMPLE
Ygen
sway
llvm source #1
Output
Compile to binary object
Link to binary
Execute the code
Intel asm syntax
Demangle identifiers
Verbose demangling
Filters
Unused labels
Library functions
Directives
Comments
Horizontal whitespace
Debug intrinsics
Compiler
clang (assertions trunk)
clang (trunk)
clang 10.0.0
clang 10.0.1
clang 11.0.0
clang 11.0.1
clang 12.0.0
clang 12.0.1
clang 13.0.0
clang 14.0.0
clang 15.0.0
clang 16.0.0
clang 17.0.1
clang 18.1.0
clang 19.1.0
clang 20.1.0
clang 21.1.0
clang 4.0.1
clang 5.0.0
clang 6.0.0
clang 7.0.0
clang 8.0.0
clang 9.0.0
hexagon-clang 16.0.5
llc (assertions trunk)
llc (trunk)
llc 10.0.0
llc 10.0.1
llc 11.0.0
llc 11.0.1
llc 12.0.0
llc 12.0.1
llc 13.0.0
llc 14.0.0
llc 15.0.0
llc 16.0.0
llc 17.0.1
llc 18.1.0
llc 19.1.0
llc 20.1.0
llc 21.1.0
llc 3.2
llc 3.3
llc 3.9.1
llc 4.0.0
llc 4.0.1
llc 5.0.0
llc 6.0.0
llc 7.0.0
llc 8.0.0
llc 9.0.0
opt (assertions trunk)
opt (trunk)
opt 10.0.0
opt 10.0.1
opt 11.0.0
opt 11.0.1
opt 12.0.0
opt 12.0.1
opt 13.0.0
opt 14.0.0
opt 15.0.0
opt 16.0.0
opt 17.0.1
opt 18.1.0
opt 19.1.0
opt 20.1.0
opt 21.1.0
opt 3.2
opt 3.3
opt 3.9.1
opt 4.0.0
opt 4.0.1
opt 5.0.0
opt 6.0.0
opt 7.0.0
opt 8.0.0
opt 9.0.0
Options
Source code
@.str.1 = external hidden unnamed_addr constant [33 x i8], align 1 declare i64 @BIO_ctrl(ptr noundef, i32 noundef, i64 noundef, ptr noundef) local_unnamed_addr #0 ; Function Attrs: nounwind uwtable define hidden i64 @src(ptr noundef %b, i32 noundef %cmd, i64 noundef %num, ptr noundef %ptr) #1 { entry: %ptr1 = getelementptr inbounds i8, ptr %b, i64 64 %0 = load ptr, ptr %ptr1, align 8 switch i32 %cmd, label %sw.default245 [ i32 1, label %sw.bb i32 101, label %sw.bb3 i32 123, label %sw.bb5 i32 100, label %sw.bb44 i32 157, label %sw.bb106 i32 158, label %sw.bb117 i32 159, label %sw.bb120 i32 46, label %sw.bb127 i32 93, label %sw.bb127 i32 91, label %sw.bb158 i32 92, label %sw.bb158 i32 102, label %sw.bb172 i32 155, label %sw.bb187 i32 105, label %sw.bb196 i32 8, label %sw.bb209 i32 9, label %sw.bb211 i32 10, label %sw.bb214 i32 13, label %sw.bb214 i32 11, label %sw.epilog246 i32 12, label %sw.bb216 i32 14, label %sw.bb236 i32 15, label %sw.bb237 i32 2, label %sw.bb239 ] sw.bb: ; preds = %entry store i32 1, ptr %0, align 8 %num.i = getelementptr inbounds i8, ptr %b, i64 56 %1 = load i32, ptr %num.i, align 8 %cmp.not.i = icmp eq i32 %1, -1 br i1 %cmp.not.i, label %conn_close_socket.exit, label %if.then.i if.then.i: ; preds = %sw.bb %2 = load ptr, ptr %ptr1, align 8 %3 = load i32, ptr %2, align 8 %cmp1.i = icmp eq i32 %3, 5 br i1 %cmp1.i, label %if.then2.i, label %if.end.i if.then2.i: ; preds = %if.then.i %call.i = tail call i32 @shutdown(i32 noundef %1, i32 noundef 2) #6 %.pre.i = load i32, ptr %num.i, align 8 br label %if.end.i if.end.i: ; preds = %if.then2.i, %if.then.i %4 = phi i32 [ %.pre.i, %if.then2.i ], [ %1, %if.then.i ] %call5.i = tail call i32 @BIO_closesocket(i32 noundef %4) #6 store i32 -1, ptr %num.i, align 8 br label %conn_close_socket.exit conn_close_socket.exit: ; preds = %if.end.i, %sw.bb %addr_first = getelementptr inbounds i8, ptr %0, i64 40 %5 = load ptr, ptr %addr_first, align 8 tail call void @BIO_ADDRINFO_free(ptr noundef %5) #6 store ptr null, ptr %addr_first, align 8 %flags = getelementptr inbounds i8, ptr %b, i64 48 store i32 0, ptr %flags, align 8 br label %sw.epilog246 sw.bb3: ; preds = %entry %6 = load i32, ptr %0, align 8 %cmp.not = icmp eq i32 %6, 5 br i1 %cmp.not, label %sw.epilog246, label %if.then if.then: ; preds = %sw.bb3 %call = tail call fastcc i32 @conn_state(ptr noundef nonnull %b, ptr noundef nonnull %0) %conv = sext i32 %call to i64 br label %sw.epilog246 sw.bb5: ; preds = %entry %cmp6.not = icmp eq ptr %ptr, null br i1 %cmp6.not, label %sw.epilog246, label %if.then8 if.then8: ; preds = %sw.bb5 switch i64 %num, label %sw.epilog246 [ i64 0, label %if.then11 i64 1, label %if.then15 i64 2, label %if.then19 i64 3, label %if.then24 i64 4, label %if.then34 ] if.then11: ; preds = %if.then8 %param_hostname = getelementptr inbounds i8, ptr %0, i64 16 %7 = load ptr, ptr %param_hostname, align 8 store ptr %7, ptr %ptr, align 8 br label %sw.epilog246 if.then15: ; preds = %if.then8 %param_service = getelementptr inbounds i8, ptr %0, i64 24 %8 = load ptr, ptr %param_service, align 8 store ptr %8, ptr %ptr, align 8 br label %sw.epilog246 if.then19: ; preds = %if.then8 %addr_iter = getelementptr inbounds i8, ptr %0, i64 48 %9 = load ptr, ptr %addr_iter, align 8 %call20 = tail call ptr @BIO_ADDRINFO_address(ptr noundef %9) #6 store ptr %call20, ptr %ptr, align 8 br label %sw.epilog246 if.then24: ; preds = %if.then8 %addr_iter25 = getelementptr inbounds i8, ptr %0, i64 48 %10 = load ptr, ptr %addr_iter25, align 8 %call26 = tail call i32 @BIO_ADDRINFO_family(ptr noundef %10) #6 switch i32 %call26, label %sw.default [ i32 10, label %sw.epilog246 i32 2, label %sw.bb28 i32 0, label %sw.bb29 ] sw.bb28: ; preds = %if.then24 br label %sw.epilog246 sw.bb29: ; preds = %if.then24 %connect_family = getelementptr inbounds i8, ptr %0, i64 4 %11 = load i32, ptr %connect_family, align 4 %conv30 = sext i32 %11 to i64 br label %sw.epilog246 sw.default: ; preds = %if.then24 br label %sw.epilog246 if.then34: ; preds = %if.then8 %connect_mode = getelementptr inbounds i8, ptr %0, i64 32 %12 = load i32, ptr %connect_mode, align 8 %conv35 = sext i32 %12 to i64 br label %sw.epilog246 sw.bb44: ; preds = %entry %cmp45.not = icmp eq ptr %ptr, null br i1 %cmp45.not, label %sw.epilog246, label %if.then47 if.then47: ; preds = %sw.bb44 %init = getelementptr inbounds i8, ptr %b, i64 40 store i32 1, ptr %init, align 8 switch i64 %num, label %sw.epilog246 [ i64 0, label %if.then50 i64 1, label %if.then66 i64 2, label %if.then77 i64 3, label %if.then98 ] if.then50: ; preds = %if.then47 %param_service51 = getelementptr inbounds i8, ptr %0, i64 24 %13 = load ptr, ptr %param_service51, align 8 %param_hostname52 = getelementptr inbounds i8, ptr %0, i64 16 %14 = load ptr, ptr %param_hostname52, align 8 tail call void @CRYPTO_free(ptr noundef %14, ptr noundef nonnull @.str.1, i32 noundef 522) #6 store ptr null, ptr %param_hostname52, align 8 %call56 = tail call i32 @BIO_parse_hostserv(ptr noundef nonnull %ptr, ptr noundef nonnull %param_hostname52, ptr noundef nonnull %param_service51, i32 noundef 0) #6 %conv57 = sext i32 %call56 to i64 %15 = load ptr, ptr %param_service51, align 8 %cmp59.not = icmp eq ptr %13, %15 br i1 %cmp59.not, label %sw.epilog246, label %if.then61 if.then61: ; preds = %if.then50 tail call void @CRYPTO_free(ptr noundef %13, ptr noundef nonnull @.str.1, i32 noundef 529) #6 br label %sw.epilog246 if.then66: ; preds = %if.then47 %param_service67 = getelementptr inbounds i8, ptr %0, i64 24 %16 = load ptr, ptr %param_service67, align 8 tail call void @CRYPTO_free(ptr noundef %16, ptr noundef nonnull @.str.1, i32 noundef 531) #6 %call68 = tail call noalias ptr @CRYPTO_strdup(ptr noundef nonnull %ptr, ptr noundef nonnull @.str.1, i32 noundef 532) #6 store ptr %call68, ptr %param_service67, align 8 %cmp70 = icmp ne ptr %call68, null %spec.select = zext i1 %cmp70 to i64 br label %sw.epilog246 if.then77: ; preds = %if.then47 %call78 = tail call ptr @BIO_ADDR_hostname_string(ptr noundef nonnull %ptr, i32 noundef 1) #6 %call79 = tail call ptr @BIO_ADDR_service_string(ptr noundef nonnull %ptr, i32 noundef 1) #6 %cmp80 = icmp ne ptr %call78, null %cmp82 = icmp ne ptr %call79, null %17 = select i1 %cmp80, i1 %cmp82, i1 false br i1 %17, label %if.then85, label %if.else93 if.then85: ; preds = %if.then77 %param_hostname86 = getelementptr inbounds i8, ptr %0, i64 16 %18 = load ptr, ptr %param_hostname86, align 8 tail call void @CRYPTO_free(ptr noundef %18, ptr noundef nonnull @.str.1, i32 noundef 541) #6 store ptr %call78, ptr %param_hostname86, align 8 %param_service88 = getelementptr inbounds i8, ptr %0, i64 24 %19 = load ptr, ptr %param_service88, align 8 tail call void @CRYPTO_free(ptr noundef %19, ptr noundef nonnull @.str.1, i32 noundef 543) #6 store ptr %call79, ptr %param_service88, align 8 %addr_first90 = getelementptr inbounds i8, ptr %0, i64 40 %20 = load ptr, ptr %addr_first90, align 8 tail call void @BIO_ADDRINFO_free(ptr noundef %20) #6 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %addr_first90, i8 0, i64 16, i1 false) br label %sw.epilog246 if.else93: ; preds = %if.then77 tail call void @CRYPTO_free(ptr noundef %call78, ptr noundef nonnull @.str.1, i32 noundef 549) #6 tail call void @CRYPTO_free(ptr noundef %call79, ptr noundef nonnull @.str.1, i32 noundef 550) #6 br label %sw.epilog246 if.then98: ; preds = %if.then47 %21 = load i32, ptr %ptr, align 4 %connect_family99 = getelementptr inbounds i8, ptr %0, i64 4 store i32 %21, ptr %connect_family99, align 4 br label %sw.epilog246 sw.bb106: ; preds = %entry %22 = add i64 %num, -3 %or.cond = icmp ult i64 %22, -2 br i1 %or.cond, label %sw.epilog246, label %lor.lhs.false lor.lhs.false: ; preds = %sw.bb106 %23 = load i32, ptr %0, align 8 %cmp112 = icmp sgt i32 %23, 1 br i1 %cmp112, label %sw.epilog246, label %if.end115 if.end115: ; preds = %lor.lhs.false %conv116 = trunc i64 %num to i32 %connect_sock_type = getelementptr inbounds i8, ptr %0, i64 8 store i32 %conv116, ptr %connect_sock_type, align 8 br label %sw.epilog246 sw.bb117: ; preds = %entry %connect_sock_type118 = getelementptr inbounds i8, ptr %0, i64 8 %24 = load i32, ptr %connect_sock_type118, align 8 %conv119 = sext i32 %24 to i64 br label %sw.epilog246 sw.bb120: ; preds = %entry %dgram_bio = getelementptr inbounds i8, ptr %0, i64 64 %25 = load ptr, ptr %dgram_bio, align 8 %cmp121.not = icmp eq ptr %25, null br i1 %cmp121.not, label %sw.epilog246, label %if.then123 if.then123: ; preds = %sw.bb120 store ptr %25, ptr %ptr, align 8 br label %sw.epilog246 sw.bb127: ; preds = %entry, %entry %26 = load i32, ptr %0, align 8 %cmp129.not = icmp eq i32 %26, 5 br i1 %cmp129.not, label %land.lhs.true137, label %if.end133 if.end133: ; preds = %sw.bb127 %call132 = tail call fastcc i32 @conn_state(ptr noundef nonnull %b, ptr noundef nonnull %0) %.pr = load i32, ptr %0, align 8 %cmp135 = icmp sgt i32 %.pr, 2 br i1 %cmp135, label %land.lhs.true137, label %sw.epilog246 land.lhs.true137: ; preds = %if.end133, %sw.bb127 %addr_iter138 = getelementptr inbounds i8, ptr %0, i64 48 %27 = load ptr, ptr %addr_iter138, align 8 %cmp139.not = icmp eq ptr %27, null br i1 %cmp139.not, label %sw.epilog246, label %land.lhs.true141 land.lhs.true141: ; preds = %land.lhs.true137 %call143 = tail call ptr @BIO_ADDRINFO_address(ptr noundef nonnull %27) #6 %cmp144.not = icmp eq ptr %call143, null br i1 %cmp144.not, label %sw.epilog246, label %if.then146 if.then146: ; preds = %land.lhs.true141 %call147 = tail call i32 @BIO_ADDR_sockaddr_size(ptr noundef nonnull %call143) #6 %conv148 = zext i32 %call147 to i64 %cmp149 = icmp eq i64 %num, 0 %28 = tail call i64 @llvm.smin.i64(i64 %conv148, i64 %num) %num.addr.0 = select i1 %cmp149, i64 %conv148, i64 %28 tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %ptr, ptr nonnull align 4 %call143, i64 %num.addr.0, i1 false) br label %sw.epilog246 sw.bb158: ; preds = %entry, %entry %29 = load i32, ptr %0, align 8 %cmp160.not = icmp eq i32 %29, 5 br i1 %cmp160.not, label %if.then168, label %if.end164 if.end164: ; preds = %sw.bb158 %call163 = tail call fastcc i32 @conn_state(ptr noundef nonnull %b, ptr noundef nonnull %0) %.pr125 = load i32, ptr %0, align 8 %cmp166 = icmp sgt i32 %.pr125, 2 br i1 %cmp166, label %if.then168, label %sw.epilog246 if.then168: ; preds = %if.end164, %sw.bb158 store i32 1, ptr %ptr, align 8 %num169 = getelementptr inbounds i8, ptr %b, i64 56 %30 = load i32, ptr %num169, align 8 %value = getelementptr inbounds i8, ptr %ptr, i64 8 store i32 %30, ptr %value, align 8 br label %sw.epilog246 sw.bb172: ; preds = %entry %cmp173.not = icmp eq i64 %num, 0 %connect_mode178 = getelementptr inbounds i8, ptr %0, i64 32 %31 = load i32, ptr %connect_mode178, align 8 %and = and i32 %31, -9 %masksel = select i1 %cmp173.not, i32 0, i32 8 %and.sink = or disjoint i32 %and, %masksel store i32 %and.sink, ptr %connect_mode178, align 8 %dgram_bio180 = getelementptr inbounds i8, ptr %0, i64 64 %32 = load ptr, ptr %dgram_bio180, align 8 %cmp181.not = icmp eq ptr %32, null br i1 %cmp181.not, label %sw.epilog246, label %if.then183 if.then183: ; preds = %sw.bb172 %call185 = tail call i64 @BIO_ctrl(ptr noundef nonnull %32, i32 noundef 102, i64 noundef %num, ptr noundef null) #6 br label %sw.epilog246 sw.bb187: ; preds = %entry %conv188 = trunc i64 %num to i32 %connect_mode189 = getelementptr inbounds i8, ptr %0, i64 32 store i32 %conv188, ptr %connect_mode189, align 8 %and190 = and i64 %num, 32 %tobool191.not = icmp eq i64 %and190, 0 %tfo_first194 = getelementptr inbounds i8, ptr %0, i64 36 br i1 %tobool191.not, label %if.else193, label %if.then192 if.then192: ; preds = %sw.bb187 store i32 1, ptr %tfo_first194, align 4 br label %sw.epilog246 if.else193: ; preds = %sw.bb187 store i32 0, ptr %tfo_first194, align 4 br label %sw.epilog246 sw.bb196: ; preds = %entry %init197 = getelementptr inbounds i8, ptr %b, i64 40 %33 = load i32, ptr %init197, align 8 %tobool198.not = icmp eq i32 %33, 0 br i1 %tobool198.not, label %sw.epilog246, label %if.then199 if.then199: ; preds = %sw.bb196 %cmp200.not = icmp eq ptr %ptr, null %num205.phi.trans.insert = getelementptr inbounds i8, ptr %b, i64 56 %.pre = load i32, ptr %num205.phi.trans.insert, align 8 br i1 %cmp200.not, label %if.end204, label %if.then202 if.then202: ; preds = %if.then199 store i32 %.pre, ptr %ptr, align 4 br label %if.end204 if.end204: ; preds = %if.then202, %if.then199 %conv206 = sext i32 %.pre to i64 br label %sw.epilog246 sw.bb209: ; preds = %entry %shutdown = getelementptr inbounds i8, ptr %b, i64 44 %34 = load i32, ptr %shutdown, align 4 %conv210 = sext i32 %34 to i64 br label %sw.epilog246 sw.bb211: ; preds = %entry %conv212 = trunc i64 %num to i32 %shutdown213 = getelementptr inbounds i8, ptr %b, i64 44 store i32 %conv212, ptr %shutdown213, align 4 br label %sw.epilog246 sw.bb214: ; preds = %entry, %entry br label %sw.epilog246 sw.bb216: ; preds = %entry %param_hostname217 = getelementptr inbounds i8, ptr %0, i64 16 %35 = load ptr, ptr %param_hostname217, align 8 %tobool218.not = icmp eq ptr %35, null br i1 %tobool218.not, label %if.end222, label %if.then219 if.then219: ; preds = %sw.bb216 %call221 = tail call i64 @BIO_ctrl(ptr noundef %ptr, i32 noundef 100, i64 noundef 0, ptr noundef nonnull %35) #6 br label %if.end222 if.end222: ; preds = %if.then219, %sw.bb216 %param_service223 = getelementptr inbounds i8, ptr %0, i64 24 %36 = load ptr, ptr %param_service223, align 8 %tobool224.not = icmp eq ptr %36, null br i1 %tobool224.not, label %if.end228, label %if.then225 if.then225: ; preds = %if.end222 %call227 = tail call i64 @BIO_ctrl(ptr noundef %ptr, i32 noundef 100, i64 noundef 1, ptr noundef nonnull %36) #6 br label %if.end228 if.end228: ; preds = %if.then225, %if.end222 %connect_family229 = getelementptr inbounds i8, ptr %0, i64 4 %37 = load i32, ptr %connect_family229, align 4 %call230 = tail call i64 @BIO_int_ctrl(ptr noundef %ptr, i32 noundef 100, i64 noundef 3, i32 noundef %37) #6 %connect_mode231 = getelementptr inbounds i8, ptr %0, i64 32 %38 = load i32, ptr %connect_mode231, align 8 %conv232 = sext i32 %38 to i64 %call233 = tail call i64 @BIO_ctrl(ptr noundef %ptr, i32 noundef 155, i64 noundef %conv232, ptr noundef null) #6 %info_callback = getelementptr inbounds i8, ptr %0, i64 56 %39 = load ptr, ptr %info_callback, align 8 %call234 = tail call i64 @BIO_callback_ctrl(ptr noundef %ptr, i32 noundef 14, ptr noundef %39) #6 br label %sw.epilog246 sw.bb236: ; preds = %entry br label %sw.epilog246 sw.bb237: ; preds = %entry %info_callback238 = getelementptr inbounds i8, ptr %0, i64 56 %40 = load ptr, ptr %info_callback238, align 8 store ptr %40, ptr %ptr, align 8 br label %sw.epilog246 sw.bb239: ; preds = %entry %flags240 = getelementptr inbounds i8, ptr %b, i64 48 %41 = load i32, ptr %flags240, align 8 %and241 = lshr i32 %41, 11 %and241.lobit = and i32 %and241, 1 %conv244 = zext nneg i32 %and241.lobit to i64 br label %sw.epilog246 sw.default245: ; preds = %entry br label %sw.epilog246 sw.epilog246: ; preds = %sw.default245, %sw.bb239, %sw.bb237, %sw.bb236, %if.end228, %sw.bb214, %sw.bb211, %sw.bb209, %if.end204, %sw.bb196, %if.else193, %if.then192, %if.then183, %sw.bb172, %if.then168, %if.end164, %if.then146, %land.lhs.true141, %land.lhs.true137, %if.end133, %if.then123, %sw.bb120, %sw.bb117, %if.end115, %lor.lhs.false, %sw.bb106, %if.then98, %if.else93, %if.then85, %if.then66, %if.then61, %if.then50, %if.then47, %sw.bb44, %if.then34, %sw.default, %sw.bb29, %sw.bb28, %if.then24, %if.then19, %if.then15, %if.then11, %if.then8, %sw.bb5, %if.then, %sw.bb3, %conn_close_socket.exit, %entry %ret.0 = phi i64 [ 0, %sw.default245 ], [ %conv244, %sw.bb239 ], [ 1, %sw.bb237 ], [ 0, %sw.bb236 ], [ 1, %if.end228 ], [ 1, %entry ], [ 0, %sw.bb214 ], [ 1, %sw.bb211 ], [ %conv210, %sw.bb209 ], [ %conv206, %if.end204 ], [ 1, %if.then192 ], [ 1, %if.else193 ], [ %call185, %if.then183 ], [ 1, %sw.bb172 ], [ 1, %if.then168 ], [ %num.addr.0, %if.then146 ], [ 1, %if.then123 ], [ %conv119, %sw.bb117 ], [ 1, %if.end115 ], [ %conv57, %if.then61 ], [ %conv57, %if.then50 ], [ 1, %if.then85 ], [ 0, %if.else93 ], [ 1, %if.then98 ], [ 1, %sw.bb44 ], [ 1, %if.then11 ], [ 1, %if.then15 ], [ 1, %if.then19 ], [ -1, %sw.default ], [ %conv30, %sw.bb29 ], [ 4, %sw.bb28 ], [ %conv35, %if.then34 ], [ %conv, %if.then ], [ 0, %conn_close_socket.exit ], [ 1, %sw.bb3 ], [ 6, %if.then24 ], [ 0, %if.then8 ], [ 0, %sw.bb5 ], [ %spec.select, %if.then66 ], [ 0, %if.then47 ], [ 0, %sw.bb106 ], [ 0, %lor.lhs.false ], [ 0, %sw.bb120 ], [ 0, %land.lhs.true141 ], [ 0, %land.lhs.true137 ], [ 0, %if.end133 ], [ 0, %if.end164 ], [ -1, %sw.bb196 ] ret i64 %ret.0 } ; Function Attrs: nounwind uwtable declare hidden fastcc i32 @conn_state(ptr noundef, ptr noundef) unnamed_addr #1 declare i32 @BIO_ADDRINFO_family(ptr noundef) local_unnamed_addr #0 declare ptr @BIO_ADDRINFO_address(ptr noundef) local_unnamed_addr #0 declare i32 @BIO_closesocket(i32 noundef) local_unnamed_addr #0 declare void @BIO_ADDRINFO_free(ptr noundef) local_unnamed_addr #0 declare void @CRYPTO_free(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #0 declare i32 @BIO_parse_hostserv(ptr noundef, ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #0 declare noalias ptr @CRYPTO_strdup(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #0 declare ptr @BIO_ADDR_hostname_string(ptr noundef, i32 noundef) local_unnamed_addr #0 declare ptr @BIO_ADDR_service_string(ptr noundef, i32 noundef) local_unnamed_addr #0 declare i32 @BIO_ADDR_sockaddr_size(ptr noundef) local_unnamed_addr #0 ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2 declare i64 @BIO_int_ctrl(ptr noundef, i32 noundef, i64 noundef, i32 noundef) local_unnamed_addr #0 declare i64 @BIO_callback_ctrl(ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #0 ; Function Attrs: nounwind declare i32 @shutdown(i32 noundef, i32 noundef) local_unnamed_addr #3 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.smin.i64(i64, i64) #4 ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #5 attributes #0 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } attributes #3 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: write) } attributes #6 = { nounwind } !llvm.module.flags = !{!0, !1, !2, !3} !0 = !{i32 1, !"wchar_size", i32 4} !1 = !{i32 8, !"PIC Level", i32 2} !2 = !{i32 7, !"uwtable", i32 2} !3 = !{i32 7, !"frame-pointer", i32 2}
llvm source #2
Output
Compile to binary object
Link to binary
Execute the code
Intel asm syntax
Demangle identifiers
Verbose demangling
Filters
Unused labels
Library functions
Directives
Comments
Horizontal whitespace
Debug intrinsics
Compiler
clang (assertions trunk)
clang (trunk)
clang 10.0.0
clang 10.0.1
clang 11.0.0
clang 11.0.1
clang 12.0.0
clang 12.0.1
clang 13.0.0
clang 14.0.0
clang 15.0.0
clang 16.0.0
clang 17.0.1
clang 18.1.0
clang 19.1.0
clang 20.1.0
clang 21.1.0
clang 4.0.1
clang 5.0.0
clang 6.0.0
clang 7.0.0
clang 8.0.0
clang 9.0.0
hexagon-clang 16.0.5
llc (assertions trunk)
llc (trunk)
llc 10.0.0
llc 10.0.1
llc 11.0.0
llc 11.0.1
llc 12.0.0
llc 12.0.1
llc 13.0.0
llc 14.0.0
llc 15.0.0
llc 16.0.0
llc 17.0.1
llc 18.1.0
llc 19.1.0
llc 20.1.0
llc 21.1.0
llc 3.2
llc 3.3
llc 3.9.1
llc 4.0.0
llc 4.0.1
llc 5.0.0
llc 6.0.0
llc 7.0.0
llc 8.0.0
llc 9.0.0
opt (assertions trunk)
opt (trunk)
opt 10.0.0
opt 10.0.1
opt 11.0.0
opt 11.0.1
opt 12.0.0
opt 12.0.1
opt 13.0.0
opt 14.0.0
opt 15.0.0
opt 16.0.0
opt 17.0.1
opt 18.1.0
opt 19.1.0
opt 20.1.0
opt 21.1.0
opt 3.2
opt 3.3
opt 3.9.1
opt 4.0.0
opt 4.0.1
opt 5.0.0
opt 6.0.0
opt 7.0.0
opt 8.0.0
opt 9.0.0
Options
Source code
@.str.1 = external hidden unnamed_addr constant [33 x i8], align 1 declare i64 @BIO_ctrl(ptr noundef, i32 noundef, i64 noundef, ptr noundef) local_unnamed_addr #0 ; Function Attrs: nounwind uwtable define hidden i64 @tgt(ptr noundef %b, i32 noundef %cmd, i64 noundef %num, ptr noundef %ptr) #1 { entry: %ptr1 = getelementptr inbounds i8, ptr %b, i64 64 %0 = load ptr, ptr %ptr1, align 8 switch i32 %cmd, label %sw.epilog246 [ i32 1, label %sw.bb i32 101, label %sw.bb3 i32 123, label %sw.bb5 i32 100, label %sw.bb44 i32 157, label %sw.bb106 i32 158, label %sw.bb117 i32 159, label %sw.bb120 i32 46, label %sw.bb127 i32 93, label %sw.bb127 i32 91, label %sw.bb158 i32 92, label %sw.bb158 i32 102, label %sw.bb172 i32 155, label %sw.bb187 i32 105, label %sw.bb196 i32 8, label %sw.bb209 i32 9, label %sw.bb211 i32 2, label %sw.bb239 i32 15, label %sw.bb237 i32 11, label %sw.bb215 i32 12, label %sw.bb216 ] sw.bb: ; preds = %entry store i32 1, ptr %0, align 8 %num.i = getelementptr inbounds i8, ptr %b, i64 56 %1 = load i32, ptr %num.i, align 8 %cmp.not.i = icmp eq i32 %1, -1 br i1 %cmp.not.i, label %conn_close_socket.exit, label %if.then.i if.then.i: ; preds = %sw.bb %2 = load ptr, ptr %ptr1, align 8 %3 = load i32, ptr %2, align 8 %cmp1.i = icmp eq i32 %3, 5 br i1 %cmp1.i, label %if.then2.i, label %if.end.i if.then2.i: ; preds = %if.then.i %call.i = tail call i32 @shutdown(i32 noundef %1, i32 noundef 2) #6 %.pre.i = load i32, ptr %num.i, align 8 br label %if.end.i if.end.i: ; preds = %if.then2.i, %if.then.i %4 = phi i32 [ %.pre.i, %if.then2.i ], [ %1, %if.then.i ] %call5.i = tail call i32 @BIO_closesocket(i32 noundef %4) #6 store i32 -1, ptr %num.i, align 8 br label %conn_close_socket.exit conn_close_socket.exit: ; preds = %if.end.i, %sw.bb %addr_first = getelementptr inbounds i8, ptr %0, i64 40 %5 = load ptr, ptr %addr_first, align 8 tail call void @BIO_ADDRINFO_free(ptr noundef %5) #6 store ptr null, ptr %addr_first, align 8 %flags = getelementptr inbounds i8, ptr %b, i64 48 store i32 0, ptr %flags, align 8 br label %sw.epilog246 sw.bb3: ; preds = %entry %6 = load i32, ptr %0, align 8 %cmp.not = icmp eq i32 %6, 5 br i1 %cmp.not, label %sw.epilog246, label %if.then if.then: ; preds = %sw.bb3 %call = tail call fastcc i32 @conn_state(ptr noundef nonnull %b, ptr noundef nonnull %0) %conv = sext i32 %call to i64 br label %sw.epilog246 sw.bb5: ; preds = %entry %cmp6.not = icmp eq ptr %ptr, null br i1 %cmp6.not, label %sw.epilog246, label %if.then8 if.then8: ; preds = %sw.bb5 switch i64 %num, label %sw.epilog246 [ i64 0, label %if.then11 i64 1, label %if.then15 i64 2, label %if.then19 i64 3, label %if.then24 i64 4, label %if.then34 ] if.then11: ; preds = %if.then8 %param_hostname = getelementptr inbounds i8, ptr %0, i64 16 %7 = load ptr, ptr %param_hostname, align 8 store ptr %7, ptr %ptr, align 8 br label %sw.epilog246 if.then15: ; preds = %if.then8 %param_service = getelementptr inbounds i8, ptr %0, i64 24 %8 = load ptr, ptr %param_service, align 8 store ptr %8, ptr %ptr, align 8 br label %sw.epilog246 if.then19: ; preds = %if.then8 %addr_iter = getelementptr inbounds i8, ptr %0, i64 48 %9 = load ptr, ptr %addr_iter, align 8 %call20 = tail call ptr @BIO_ADDRINFO_address(ptr noundef %9) #6 store ptr %call20, ptr %ptr, align 8 br label %sw.epilog246 if.then24: ; preds = %if.then8 %addr_iter25 = getelementptr inbounds i8, ptr %0, i64 48 %10 = load ptr, ptr %addr_iter25, align 8 %call26 = tail call i32 @BIO_ADDRINFO_family(ptr noundef %10) #6 switch i32 %call26, label %sw.default [ i32 10, label %sw.epilog246 i32 2, label %sw.bb28 i32 0, label %sw.bb29 ] sw.bb28: ; preds = %if.then24 br label %sw.epilog246 sw.bb29: ; preds = %if.then24 %connect_family = getelementptr inbounds i8, ptr %0, i64 4 %11 = load i32, ptr %connect_family, align 4 %conv30 = sext i32 %11 to i64 br label %sw.epilog246 sw.default: ; preds = %if.then24 br label %sw.epilog246 if.then34: ; preds = %if.then8 %connect_mode = getelementptr inbounds i8, ptr %0, i64 32 %12 = load i32, ptr %connect_mode, align 8 %conv35 = sext i32 %12 to i64 br label %sw.epilog246 sw.bb44: ; preds = %entry %cmp45.not = icmp eq ptr %ptr, null br i1 %cmp45.not, label %sw.epilog246, label %if.then47 if.then47: ; preds = %sw.bb44 %init = getelementptr inbounds i8, ptr %b, i64 40 store i32 1, ptr %init, align 8 switch i64 %num, label %sw.epilog246 [ i64 0, label %if.then50 i64 1, label %if.then66 i64 2, label %if.then77 i64 3, label %if.then98 ] if.then50: ; preds = %if.then47 %param_service51 = getelementptr inbounds i8, ptr %0, i64 24 %13 = load ptr, ptr %param_service51, align 8 %param_hostname52 = getelementptr inbounds i8, ptr %0, i64 16 %14 = load ptr, ptr %param_hostname52, align 8 tail call void @CRYPTO_free(ptr noundef %14, ptr noundef nonnull @.str.1, i32 noundef 522) #6 store ptr null, ptr %param_hostname52, align 8 %call56 = tail call i32 @BIO_parse_hostserv(ptr noundef nonnull %ptr, ptr noundef nonnull %param_hostname52, ptr noundef nonnull %param_service51, i32 noundef 0) #6 %conv57 = sext i32 %call56 to i64 %15 = load ptr, ptr %param_service51, align 8 %cmp59.not = icmp eq ptr %13, %15 br i1 %cmp59.not, label %sw.epilog246, label %if.then61 if.then61: ; preds = %if.then50 tail call void @CRYPTO_free(ptr noundef %13, ptr noundef nonnull @.str.1, i32 noundef 529) #6 br label %sw.epilog246 if.then66: ; preds = %if.then47 %param_service67 = getelementptr inbounds i8, ptr %0, i64 24 %16 = load ptr, ptr %param_service67, align 8 tail call void @CRYPTO_free(ptr noundef %16, ptr noundef nonnull @.str.1, i32 noundef 531) #6 %call68 = tail call noalias ptr @CRYPTO_strdup(ptr noundef nonnull %ptr, ptr noundef nonnull @.str.1, i32 noundef 532) #6 store ptr %call68, ptr %param_service67, align 8 %cmp70 = icmp ne ptr %call68, null %spec.select = zext i1 %cmp70 to i64 br label %sw.epilog246 if.then77: ; preds = %if.then47 %call78 = tail call ptr @BIO_ADDR_hostname_string(ptr noundef nonnull %ptr, i32 noundef 1) #6 %call79 = tail call ptr @BIO_ADDR_service_string(ptr noundef nonnull %ptr, i32 noundef 1) #6 %cmp80 = icmp ne ptr %call78, null %cmp82 = icmp ne ptr %call79, null %spec.select1 = select i1 %cmp80, i1 %cmp82, i1 false br i1 %spec.select1, label %if.then85, label %if.else93 if.then85: ; preds = %if.then77 %param_hostname86 = getelementptr inbounds i8, ptr %0, i64 16 %17 = load ptr, ptr %param_hostname86, align 8 tail call void @CRYPTO_free(ptr noundef %17, ptr noundef nonnull @.str.1, i32 noundef 541) #6 store ptr %call78, ptr %param_hostname86, align 8 %param_service88 = getelementptr inbounds i8, ptr %0, i64 24 %18 = load ptr, ptr %param_service88, align 8 tail call void @CRYPTO_free(ptr noundef %18, ptr noundef nonnull @.str.1, i32 noundef 543) #6 store ptr %call79, ptr %param_service88, align 8 %addr_first90 = getelementptr inbounds i8, ptr %0, i64 40 %19 = load ptr, ptr %addr_first90, align 8 tail call void @BIO_ADDRINFO_free(ptr noundef %19) #6 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %addr_first90, i8 0, i64 16, i1 false) br label %sw.epilog246 if.else93: ; preds = %if.then77 tail call void @CRYPTO_free(ptr noundef %call78, ptr noundef nonnull @.str.1, i32 noundef 549) #6 tail call void @CRYPTO_free(ptr noundef %call79, ptr noundef nonnull @.str.1, i32 noundef 550) #6 br label %sw.epilog246 if.then98: ; preds = %if.then47 %20 = load i32, ptr %ptr, align 4 %connect_family99 = getelementptr inbounds i8, ptr %0, i64 4 store i32 %20, ptr %connect_family99, align 4 br label %sw.epilog246 sw.bb106: ; preds = %entry %num.off = add i64 %num, -1 %switch = icmp ult i64 %num.off, 2 br i1 %switch, label %lor.lhs.false, label %sw.epilog246 lor.lhs.false: ; preds = %sw.bb106 %21 = load i32, ptr %0, align 8 %cmp112 = icmp sgt i32 %21, 1 br i1 %cmp112, label %sw.epilog246, label %if.end115 if.end115: ; preds = %lor.lhs.false %conv116 = trunc i64 %num to i32 %connect_sock_type = getelementptr inbounds i8, ptr %0, i64 8 store i32 %conv116, ptr %connect_sock_type, align 8 br label %sw.epilog246 sw.bb117: ; preds = %entry %connect_sock_type118 = getelementptr inbounds i8, ptr %0, i64 8 %22 = load i32, ptr %connect_sock_type118, align 8 %conv119 = sext i32 %22 to i64 br label %sw.epilog246 sw.bb120: ; preds = %entry %dgram_bio = getelementptr inbounds i8, ptr %0, i64 64 %23 = load ptr, ptr %dgram_bio, align 8 %cmp121.not = icmp eq ptr %23, null br i1 %cmp121.not, label %sw.epilog246, label %if.then123 if.then123: ; preds = %sw.bb120 store ptr %23, ptr %ptr, align 8 br label %sw.epilog246 sw.bb127: ; preds = %entry, %entry %24 = load i32, ptr %0, align 8 %cmp129.not = icmp eq i32 %24, 5 br i1 %cmp129.not, label %land.lhs.true137, label %if.end133 if.end133: ; preds = %sw.bb127 %call132 = tail call fastcc i32 @conn_state(ptr noundef nonnull %b, ptr noundef nonnull %0) %.pr = load i32, ptr %0, align 8 %cmp135 = icmp sgt i32 %.pr, 2 br i1 %cmp135, label %land.lhs.true137, label %sw.epilog246 land.lhs.true137: ; preds = %if.end133, %sw.bb127 %addr_iter138 = getelementptr inbounds i8, ptr %0, i64 48 %25 = load ptr, ptr %addr_iter138, align 8 %cmp139.not = icmp eq ptr %25, null br i1 %cmp139.not, label %sw.epilog246, label %land.lhs.true141 land.lhs.true141: ; preds = %land.lhs.true137 %call143 = tail call ptr @BIO_ADDRINFO_address(ptr noundef nonnull %25) #6 %cmp144.not = icmp eq ptr %call143, null br i1 %cmp144.not, label %sw.epilog246, label %if.then146 if.then146: ; preds = %land.lhs.true141 %call147 = tail call i32 @BIO_ADDR_sockaddr_size(ptr noundef nonnull %call143) #6 %conv148 = zext i32 %call147 to i64 %cmp149 = icmp eq i64 %num, 0 %26 = tail call i64 @llvm.smin.i64(i64 %conv148, i64 %num) %num.addr.0 = select i1 %cmp149, i64 %conv148, i64 %26 tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %ptr, ptr nonnull align 4 %call143, i64 %num.addr.0, i1 false) br label %sw.epilog246 sw.bb158: ; preds = %entry, %entry %27 = load i32, ptr %0, align 8 %cmp160.not = icmp eq i32 %27, 5 br i1 %cmp160.not, label %if.then168, label %if.end164 if.end164: ; preds = %sw.bb158 %call163 = tail call fastcc i32 @conn_state(ptr noundef nonnull %b, ptr noundef nonnull %0) %.pr8 = load i32, ptr %0, align 8 %cmp166 = icmp sgt i32 %.pr8, 2 br i1 %cmp166, label %if.then168, label %sw.epilog246 if.then168: ; preds = %if.end164, %sw.bb158 store i32 1, ptr %ptr, align 8 %num169 = getelementptr inbounds i8, ptr %b, i64 56 %28 = load i32, ptr %num169, align 8 %value = getelementptr inbounds i8, ptr %ptr, i64 8 store i32 %28, ptr %value, align 8 br label %sw.epilog246 sw.bb172: ; preds = %entry %cmp173.not = icmp eq i64 %num, 0 %connect_mode178 = getelementptr inbounds i8, ptr %0, i64 32 %29 = load i32, ptr %connect_mode178, align 8 %and = and i32 %29, -9 %masksel = select i1 %cmp173.not, i32 0, i32 8 %and.sink = or disjoint i32 %and, %masksel store i32 %and.sink, ptr %connect_mode178, align 8 %dgram_bio180 = getelementptr inbounds i8, ptr %0, i64 64 %30 = load ptr, ptr %dgram_bio180, align 8 %cmp181.not = icmp eq ptr %30, null br i1 %cmp181.not, label %sw.epilog246, label %if.then183 if.then183: ; preds = %sw.bb172 %call185 = tail call i64 @BIO_ctrl(ptr noundef nonnull %30, i32 noundef 102, i64 noundef %num, ptr noundef null) #6 br label %sw.epilog246 sw.bb187: ; preds = %entry %conv188 = trunc i64 %num to i32 %connect_mode189 = getelementptr inbounds i8, ptr %0, i64 32 store i32 %conv188, ptr %connect_mode189, align 8 %and190 = and i64 %num, 32 %tobool191.not = icmp eq i64 %and190, 0 %tfo_first194 = getelementptr inbounds i8, ptr %0, i64 36 br i1 %tobool191.not, label %if.else193, label %if.then192 if.then192: ; preds = %sw.bb187 store i32 1, ptr %tfo_first194, align 4 br label %sw.epilog246 if.else193: ; preds = %sw.bb187 store i32 0, ptr %tfo_first194, align 4 br label %sw.epilog246 sw.bb196: ; preds = %entry %init197 = getelementptr inbounds i8, ptr %b, i64 40 %31 = load i32, ptr %init197, align 8 %tobool198.not = icmp eq i32 %31, 0 br i1 %tobool198.not, label %sw.epilog246, label %if.then199 if.then199: ; preds = %sw.bb196 %cmp200.not = icmp eq ptr %ptr, null %num205.phi.trans.insert = getelementptr inbounds i8, ptr %b, i64 56 %.pre = load i32, ptr %num205.phi.trans.insert, align 8 br i1 %cmp200.not, label %if.end204, label %if.then202 if.then202: ; preds = %if.then199 store i32 %.pre, ptr %ptr, align 4 br label %if.end204 if.end204: ; preds = %if.then202, %if.then199 %conv206 = sext i32 %.pre to i64 br label %sw.epilog246 sw.bb209: ; preds = %entry %shutdown = getelementptr inbounds i8, ptr %b, i64 44 %32 = load i32, ptr %shutdown, align 4 %conv210 = sext i32 %32 to i64 br label %sw.epilog246 sw.bb211: ; preds = %entry %conv212 = trunc i64 %num to i32 %shutdown213 = getelementptr inbounds i8, ptr %b, i64 44 store i32 %conv212, ptr %shutdown213, align 4 br label %sw.epilog246 sw.bb215: ; preds = %entry br label %sw.epilog246 sw.bb216: ; preds = %entry %param_hostname217 = getelementptr inbounds i8, ptr %0, i64 16 %33 = load ptr, ptr %param_hostname217, align 8 %tobool218.not = icmp eq ptr %33, null br i1 %tobool218.not, label %if.end222, label %if.then219 if.then219: ; preds = %sw.bb216 %call221 = tail call i64 @BIO_ctrl(ptr noundef %ptr, i32 noundef 100, i64 noundef 0, ptr noundef nonnull %33) #6 br label %if.end222 if.end222: ; preds = %if.then219, %sw.bb216 %param_service223 = getelementptr inbounds i8, ptr %0, i64 24 %34 = load ptr, ptr %param_service223, align 8 %tobool224.not = icmp eq ptr %34, null br i1 %tobool224.not, label %if.end228, label %if.then225 if.then225: ; preds = %if.end222 %call227 = tail call i64 @BIO_ctrl(ptr noundef %ptr, i32 noundef 100, i64 noundef 1, ptr noundef nonnull %34) #6 br label %if.end228 if.end228: ; preds = %if.then225, %if.end222 %connect_family229 = getelementptr inbounds i8, ptr %0, i64 4 %35 = load i32, ptr %connect_family229, align 4 %call230 = tail call i64 @BIO_int_ctrl(ptr noundef %ptr, i32 noundef 100, i64 noundef 3, i32 noundef %35) #6 %connect_mode231 = getelementptr inbounds i8, ptr %0, i64 32 %36 = load i32, ptr %connect_mode231, align 8 %conv232 = sext i32 %36 to i64 %call233 = tail call i64 @BIO_ctrl(ptr noundef %ptr, i32 noundef 155, i64 noundef %conv232, ptr noundef null) #6 %info_callback = getelementptr inbounds i8, ptr %0, i64 56 %37 = load ptr, ptr %info_callback, align 8 %call234 = tail call i64 @BIO_callback_ctrl(ptr noundef %ptr, i32 noundef 14, ptr noundef %37) #6 br label %sw.epilog246 sw.bb237: ; preds = %entry %info_callback238 = getelementptr inbounds i8, ptr %0, i64 56 %38 = load ptr, ptr %info_callback238, align 8 store ptr %38, ptr %ptr, align 8 br label %sw.epilog246 sw.bb239: ; preds = %entry %flags240 = getelementptr inbounds i8, ptr %b, i64 48 %39 = load i32, ptr %flags240, align 8 %and241 = lshr i32 %39, 11 %and241.lobit = and i32 %and241, 1 %conv244 = zext nneg i32 %and241.lobit to i64 br label %sw.epilog246 sw.epilog246: ; preds = %sw.bb239, %sw.bb237, %if.end228, %sw.bb215, %sw.bb211, %sw.bb209, %if.end204, %sw.bb196, %if.else193, %if.then192, %if.then183, %sw.bb172, %if.then168, %if.end164, %if.then146, %land.lhs.true141, %land.lhs.true137, %if.end133, %if.then123, %sw.bb120, %sw.bb117, %if.end115, %lor.lhs.false, %sw.bb106, %if.then98, %if.else93, %if.then85, %if.then66, %if.then61, %if.then50, %if.then47, %sw.bb44, %if.then34, %sw.default, %sw.bb29, %sw.bb28, %if.then24, %if.then19, %if.then15, %if.then11, %if.then8, %sw.bb5, %if.then, %sw.bb3, %conn_close_socket.exit, %entry %ret.19 = phi i64 [ %conv244, %sw.bb239 ], [ 1, %sw.bb237 ], [ 1, %if.end228 ], [ 1, %sw.bb215 ], [ 1, %sw.bb211 ], [ %conv210, %sw.bb209 ], [ %conv119, %sw.bb117 ], [ 1, %if.end115 ], [ 0, %conn_close_socket.exit ], [ %conv, %if.then ], [ 1, %sw.bb3 ], [ 1, %if.then11 ], [ 1, %if.then15 ], [ 1, %if.then19 ], [ -1, %sw.default ], [ %conv30, %sw.bb29 ], [ 4, %sw.bb28 ], [ 6, %if.then24 ], [ %conv35, %if.then34 ], [ 0, %if.then8 ], [ 0, %sw.bb5 ], [ 1, %sw.bb44 ], [ %conv57, %if.then61 ], [ %conv57, %if.then50 ], [ %spec.select, %if.then66 ], [ 0, %if.else93 ], [ 1, %if.then85 ], [ 1, %if.then98 ], [ 0, %if.then47 ], [ 0, %sw.bb106 ], [ 0, %lor.lhs.false ], [ 1, %if.then123 ], [ 0, %sw.bb120 ], [ %num.addr.0, %if.then146 ], [ 0, %land.lhs.true141 ], [ 0, %land.lhs.true137 ], [ 0, %if.end133 ], [ 1, %if.then168 ], [ 0, %if.end164 ], [ %call185, %if.then183 ], [ 1, %sw.bb172 ], [ 1, %if.else193 ], [ 1, %if.then192 ], [ %conv206, %if.end204 ], [ -1, %sw.bb196 ], [ 0, %entry ] ret i64 %ret.19 } ; Function Attrs: nounwind uwtable declare hidden fastcc i32 @conn_state(ptr noundef, ptr noundef) unnamed_addr #1 declare i32 @BIO_ADDRINFO_family(ptr noundef) local_unnamed_addr #0 declare ptr @BIO_ADDRINFO_address(ptr noundef) local_unnamed_addr #0 declare i32 @BIO_closesocket(i32 noundef) local_unnamed_addr #0 declare void @BIO_ADDRINFO_free(ptr noundef) local_unnamed_addr #0 declare void @CRYPTO_free(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #0 declare i32 @BIO_parse_hostserv(ptr noundef, ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #0 declare noalias ptr @CRYPTO_strdup(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #0 declare ptr @BIO_ADDR_hostname_string(ptr noundef, i32 noundef) local_unnamed_addr #0 declare ptr @BIO_ADDR_service_string(ptr noundef, i32 noundef) local_unnamed_addr #0 declare i32 @BIO_ADDR_sockaddr_size(ptr noundef) local_unnamed_addr #0 ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2 declare i64 @BIO_int_ctrl(ptr noundef, i32 noundef, i64 noundef, i32 noundef) local_unnamed_addr #0 declare i64 @BIO_callback_ctrl(ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #0 ; Function Attrs: nounwind declare i32 @shutdown(i32 noundef, i32 noundef) local_unnamed_addr #3 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.smin.i64(i64, i64) #4 ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #5 attributes #0 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } attributes #3 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: write) } attributes #6 = { nounwind } !llvm.module.flags = !{!0, !1, !2, !3} !0 = !{i32 1, !"wchar_size", i32 4} !1 = !{i32 8, !"PIC Level", i32 2} !2 = !{i32 7, !"uwtable", i32 2} !3 = !{i32 7, !"frame-pointer", i32 2}
Become a Patron
Sponsor on GitHub
Donate via PayPal
Compiler Explorer Shop
Source on GitHub
Mailing list
Installed libraries
Wiki
Report an issue
How it works
Contact the author
CE on Mastodon
CE on Bluesky
Statistics
Changelog
Version tree