Skip to content

Instantly share code, notes, and snippets.

@locusf
Created January 12, 2017 14:21
Show Gist options
  • Select an option

  • Save locusf/2fa7f5dc9b8f8c04c5b8f4d659b337c1 to your computer and use it in GitHub Desktop.

Select an option

Save locusf/2fa7f5dc9b8f8c04c5b8f4d659b337c1 to your computer and use it in GitHub Desktop.
Chaincode llvm IR code
; ModuleID = 'main'
source_filename = "main"
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
%funcVal = type { void ()* }
%structType = type { %commonType, %structFieldSlice }
%commonType = type { i8, i8, i8, i64, i32, %funcVal*, %funcVal*, i8*, { i8*, i64 }*, %uncommonType*, %commonType* }
%uncommonType = type { { i8*, i64 }*, { i8*, i64 }*, %methodSlice }
%methodSlice = type { %method*, i64, i64 }
%method = type { { i8*, i64 }*, { i8*, i64 }*, %commonType*, %commonType*, i8* }
%structFieldSlice = type { %structField*, i64, i64 }
%structField = type { { i8*, i64 }*, { i8*, i64 }*, %commonType*, { i8*, i64 }*, i64 }
%arrayType = type { %commonType, %commonType*, %commonType*, i64 }
%ptrType = type { %commonType, %commonType* }
%funcType = type { %commonType, i8, %typeSlice, %typeSlice }
%typeSlice = type { %commonType**, i64, i64 }
%interfaceType = type { %commonType, %imethodSlice }
%imethodSlice = type { %imethod*, i64, i64 }
%imethod = type { { i8*, i64 }*, { i8*, i64 }*, %commonType* }
%sliceType = type { %commonType, %commonType* }
@__go_type_hash_empty_interface = external global i64 (i8*, i64)
@__go_type_hash_empty_interface_descriptor = external global %funcVal
@__go_type_equal_empty_interface = external global i8 (i8*, i8*, i64)
@__go_type_equal_empty_interface_descriptor = external global %funcVal
@__go_type_hash_interface_descriptor = external global %funcVal
@__go_type_equal_interface_descriptor = external global %funcVal
@__go_type_hash_string_descriptor = external global %funcVal
@__go_type_equal_string_descriptor = external global %funcVal
@__go_type_hash_identity_descriptor = external global %funcVal
@__go_type_equal_identity_descriptor = external global %funcVal
@__go_type_hash_error_descriptor = external global %funcVal
@__go_type_equal_error_descriptor = external global %funcVal
@__go_tdn_main.SimpleChaincode = constant %structType { %commonType { i8 -103, i8 1, i8 1, i64 0, i32 318774791, %funcVal* @__go_type_hash_Se_descriptor, %funcVal* @__go_type_equal_Se_descriptor, i8* bitcast ([2 x i8*]* @"__go_tdn_main.SimpleChaincode$gc" to i8*), { i8*, i64 }* @57, %uncommonType* @62, %commonType* getelementptr inbounds (%ptrType, %ptrType* @__go_td_pN20_main.SimpleChaincode, i32 0, i32 0) }, %structFieldSlice zeroinitializer }
@0 = internal global [42 x i8] c"Incorrect number of arguments. Expecting 4"
@1 = internal global [41 x i8] c"Expecting integer value for asset holding"
@2 = internal global [41 x i8] c"Expecting integer value for asset holding"
@__go_td_AIe2e = linkonce_odr constant %arrayType { %commonType { i8 17, i8 8, i8 8, i64 32, i32 30, %funcVal* @__go_type_hash_AIe2e_descriptor, %funcVal* @__go_type_hash_AIe2e_descriptor.4, i8* bitcast ([9 x i8*]* @"__go_td_AIe2e$gc" to i8*), { i8*, i64 }* @50, %uncommonType* null, %commonType* null }, %commonType* getelementptr inbounds (%interfaceType, %interfaceType* @__go_td_Ie, i32 0, i32 0), %commonType* getelementptr inbounds (%sliceType, %sliceType* @__go_td_AIee, i32 0, i32 0), i64 2 }
@__go_tdn_int = linkonce_odr constant %commonType { i8 -126, i8 8, i8 8, i64 8, i32 50332917, %funcVal* @__go_type_hash_identity_descriptor, %funcVal* @__go_type_equal_identity_descriptor, i8* bitcast ([2 x i8*]* @"__go_tdn_int$gc" to i8*), { i8*, i64 }* @52, %uncommonType* @55, %commonType* null }
@3 = internal global [21 x i8] c"Aval = %d, Bval = %d\0A"
@4 = internal global [6 x i8] c"invoke"
@5 = internal global [6 x i8] c"delete"
@6 = internal global [5 x i8] c"query"
@7 = internal global [65 x i8] c"Invalid invoke function name. Expecting \22invoke\22 \22delete\22 \22query\22"
@8 = internal global [42 x i8] c"Incorrect number of arguments. Expecting 1"
@9 = internal global [22 x i8] c"Failed to delete state"
@10 = internal global [42 x i8] c"Incorrect number of arguments. Expecting 3"
@11 = internal global [19 x i8] c"Failed to get state"
@12 = internal global [16 x i8] c"Entity not found"
@13 = internal global [19 x i8] c"Failed to get state"
@14 = internal global [16 x i8] c"Entity not found"
@15 = internal global [53 x i8] c"Invalid transaction amount, expecting a integer value"
@16 = internal global [21 x i8] c"Aval = %d, Bval = %d\0A"
@17 = internal global [68 x i8] c"Incorrect number of arguments. Expecting name of the person to query"
@18 = internal global [34 x i8] c"{\22Error\22:\22Failed to get state for "
@19 = internal global [2 x i8] c"\22}"
@20 = internal global [25 x i8] c"{\22Error\22:\22Nil amount for "
@21 = internal global [2 x i8] c"\22}"
@22 = internal global [9 x i8] c"{\22Name\22:\22"
@23 = internal global [12 x i8] c"\22,\22Amount\22:\22"
@24 = internal global [2 x i8] c"\22}"
@__go_td_AIe1e = linkonce_odr constant %arrayType { %commonType { i8 17, i8 8, i8 8, i64 16, i32 30, %funcVal* @__go_type_hash_AIe1e_descriptor, %funcVal* @__go_type_hash_AIe1e_descriptor.2, i8* bitcast ([9 x i8*]* @"__go_td_AIe1e$gc" to i8*), { i8*, i64 }* @48, %uncommonType* null, %commonType* null }, %commonType* getelementptr inbounds (%interfaceType, %interfaceType* @__go_td_Ie, i32 0, i32 0), %commonType* getelementptr inbounds (%sliceType, %sliceType* @__go_td_AIee, i32 0, i32 0), i64 1 }
@__go_tdn_string = linkonce_odr constant %commonType { i8 24, i8 8, i8 8, i64 16, i32 100666096, %funcVal* @__go_type_hash_string_descriptor, %funcVal* @__go_type_equal_string_descriptor, i8* bitcast ([4 x i8*]* @"__go_tdn_string$gc" to i8*), { i8*, i64 }* @64, %uncommonType* @67, %commonType* null }
@25 = internal global [18 x i8] c"Query Response:%s\0A"
@"main..import$descriptor" = constant i8* bitcast (void (i8*)* @main..import to i8*)
@"init$guard" = internal global i1 false
@"main.main$descriptor" = constant i8* bitcast (void (i8*)* @main.main to i8*)
@__go_td_pN20_main.SimpleChaincode = constant %ptrType { %commonType { i8 54, i8 8, i8 8, i64 8, i32 805429369, %funcVal* @__go_type_hash_identity_descriptor, %funcVal* @__go_type_equal_identity_descriptor, i8* bitcast ([5 x i8*]* @"__go_td_pN20_main.SimpleChaincode$gc" to i8*), { i8*, i64 }* @28, %uncommonType* @46, %commonType* null }, %commonType* getelementptr inbounds (%structType, %structType* @__go_tdn_main.SimpleChaincode, i32 0, i32 0) }
@__go_imt_I4_InitFpN72_github_com_hyperledger_fabric_core_chaincode_shim.ChaincodeStubInterfaceerAN5_uint8eN5_erroree6_InvokeFpN72_github_com_hyperledger_fabric_core_chaincode_shim.ChaincodeStubInterfaceerAN5_uint8eN5_erroreee__pN20_main.SimpleChaincode = linkonce_odr constant [3 x i8*] [i8* getelementptr inbounds (%ptrType, %ptrType* @__go_td_pN20_main.SimpleChaincode, i32 0, i32 0, i32 0), i8* bitcast (void ({ { i8*, i64, i64 }, { i8*, i8* } }*, i8*, i8*, i8*, i8*)* @main.Init.pN20_main.SimpleChaincode to i8*), i8* bitcast (void ({ { i8*, i64, i64 }, { i8*, i8* } }*, i8*, i8*, i8*, i8*)* @main.Invoke.pN20_main.SimpleChaincode to i8*)]
@26 = internal global [35 x i8] c"Error starting Simple chaincode: %s"
@27 = internal constant [27 x i8] c"*\09main\09main.SimpleChaincode"
@28 = internal constant { i8*, i64 } { i8* getelementptr inbounds ([27 x i8], [27 x i8]* @27, i32 0, i32 0), i64 27 }
@29 = internal constant [6 x i8] c"delete"
@30 = internal constant { i8*, i64 } { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @29, i32 0, i32 0), i64 6 }
@31 = internal constant [4 x i8] c"main"
@32 = internal constant { i8*, i64 } { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @31, i32 0, i32 0), i64 4 }
@__go_td_FpN72_github_com_hyperledger_fabric_core_chaincode_shim.ChaincodeStubInterfaceAN6_stringeerAN5_uint8eN5_erroree = linkonce_odr constant %funcType { %commonType { i8 19, i8 8, i8 8, i64 8, i32 538385416, %funcVal* @__go_type_hash_error_descriptor, %funcVal* @__go_type_equal_error_descriptor, i8* bitcast ([4 x i8*]* @"__go_td_FpN72_github_com_hyperledger_fabric_core_chaincode_shim.ChaincodeStubInterfaceAN6_stringeerAN5_uint8eN5_erroree$gc" to i8*), { i8*, i64 }* @83, %uncommonType* null, %commonType* null }, i8 0, %typeSlice { %commonType** getelementptr inbounds ([2 x %commonType*], [2 x %commonType*]* @84, i32 0, i32 0), i64 2, i64 2 }, %typeSlice { %commonType** getelementptr inbounds ([2 x %commonType*], [2 x %commonType*]* @85, i32 0, i32 0), i64 2, i64 2 } }
@__go_td_FppN20_main.SimpleChaincodeN72_github_com_hyperledger_fabric_core_chaincode_shim.ChaincodeStubInterfaceAN6_stringeerAN5_uint8eN5_erroree = linkonce_odr constant %funcType { %commonType { i8 19, i8 8, i8 8, i64 8, i32 -2140955992, %funcVal* @__go_type_hash_error_descriptor, %funcVal* @__go_type_equal_error_descriptor, i8* bitcast ([4 x i8*]* @"__go_td_FppN20_main.SimpleChaincodeN72_github_com_hyperledger_fabric_core_chaincode_shim.ChaincodeStubInterfaceAN6_stringeerAN5_uint8eN5_erroree$gc" to i8*), { i8*, i64 }* @75, %uncommonType* null, %commonType* null }, i8 0, %typeSlice { %commonType** getelementptr inbounds ([3 x %commonType*], [3 x %commonType*]* @76, i32 0, i32 0), i64 3, i64 3 }, %typeSlice { %commonType** getelementptr inbounds ([2 x %commonType*], [2 x %commonType*]* @77, i32 0, i32 0), i64 2, i64 2 } }
@33 = internal constant [6 x i8] c"invoke"
@34 = internal constant { i8*, i64 } { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @33, i32 0, i32 0), i64 6 }
@35 = internal constant [4 x i8] c"main"
@36 = internal constant { i8*, i64 } { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @35, i32 0, i32 0), i64 4 }
@37 = internal constant [5 x i8] c"query"
@38 = internal constant { i8*, i64 } { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @37, i32 0, i32 0), i64 5 }
@39 = internal constant [4 x i8] c"main"
@40 = internal constant { i8*, i64 } { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @39, i32 0, i32 0), i64 4 }
@41 = internal constant [4 x i8] c"Init"
@42 = internal constant { i8*, i64 } { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @41, i32 0, i32 0), i64 4 }
@__go_td_FpN72_github_com_hyperledger_fabric_core_chaincode_shim.ChaincodeStubInterfaceerAN5_uint8eN5_erroree = linkonce_odr constant %funcType { %commonType { i8 19, i8 8, i8 8, i64 8, i32 -1609278328, %funcVal* @__go_type_hash_error_descriptor, %funcVal* @__go_type_equal_error_descriptor, i8* bitcast ([4 x i8*]* @"__go_td_FpN72_github_com_hyperledger_fabric_core_chaincode_shim.ChaincodeStubInterfaceerAN5_uint8eN5_erroree$gc" to i8*), { i8*, i64 }* @79, %uncommonType* null, %commonType* null }, i8 0, %typeSlice { %commonType** getelementptr inbounds ([1 x %commonType*], [1 x %commonType*]* @80, i32 0, i32 0), i64 1, i64 1 }, %typeSlice { %commonType** getelementptr inbounds ([2 x %commonType*], [2 x %commonType*]* @81, i32 0, i32 0), i64 2, i64 2 } }
@__go_td_FppN20_main.SimpleChaincodeN72_github_com_hyperledger_fabric_core_chaincode_shim.ChaincodeStubInterfaceerAN5_uint8eN5_erroree = linkonce_odr constant %funcType { %commonType { i8 19, i8 8, i8 8, i64 8, i32 -2141316184, %funcVal* @__go_type_hash_error_descriptor, %funcVal* @__go_type_equal_error_descriptor, i8* bitcast ([4 x i8*]* @"__go_td_FppN20_main.SimpleChaincodeN72_github_com_hyperledger_fabric_core_chaincode_shim.ChaincodeStubInterfaceerAN5_uint8eN5_erroree$gc" to i8*), { i8*, i64 }* @71, %uncommonType* null, %commonType* null }, i8 0, %typeSlice { %commonType** getelementptr inbounds ([2 x %commonType*], [2 x %commonType*]* @72, i32 0, i32 0), i64 2, i64 2 }, %typeSlice { %commonType** getelementptr inbounds ([2 x %commonType*], [2 x %commonType*]* @73, i32 0, i32 0), i64 2, i64 2 } }
@43 = internal constant [6 x i8] c"Invoke"
@44 = internal constant { i8*, i64 } { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @43, i32 0, i32 0), i64 6 }
@45 = internal constant [5 x %method] [%method { { i8*, i64 }* @30, { i8*, i64 }* @32, %commonType* getelementptr inbounds (%funcType, %funcType* @__go_td_FpN72_github_com_hyperledger_fabric_core_chaincode_shim.ChaincodeStubInterfaceAN6_stringeerAN5_uint8eN5_erroree, i32 0, i32 0), %commonType* getelementptr inbounds (%funcType, %funcType* @__go_td_FppN20_main.SimpleChaincodeN72_github_com_hyperledger_fabric_core_chaincode_shim.ChaincodeStubInterfaceAN6_stringeerAN5_uint8eN5_erroree, i32 0, i32 0), i8* bitcast (void ({ { i8*, i64, i64 }, { i8*, i8* } }*, i8*, i8*, i8*, i8*, { i8*, i64, i64 }*)* @main.delete.pN20_main.SimpleChaincode to i8*) }, %method { { i8*, i64 }* @34, { i8*, i64 }* @36, %commonType* getelementptr inbounds (%funcType, %funcType* @__go_td_FpN72_github_com_hyperledger_fabric_core_chaincode_shim.ChaincodeStubInterfaceAN6_stringeerAN5_uint8eN5_erroree, i32 0, i32 0), %commonType* getelementptr inbounds (%funcType, %funcType* @__go_td_FppN20_main.SimpleChaincodeN72_github_com_hyperledger_fabric_core_chaincode_shim.ChaincodeStubInterfaceAN6_stringeerAN5_uint8eN5_erroree, i32 0, i32 0), i8* bitcast (void ({ { i8*, i64, i64 }, { i8*, i8* } }*, i8*, i8*, i8*, i8*, { i8*, i64, i64 }*)* @main.invoke.pN20_main.SimpleChaincode to i8*) }, %method { { i8*, i64 }* @38, { i8*, i64 }* @40, %commonType* getelementptr inbounds (%funcType, %funcType* @__go_td_FpN72_github_com_hyperledger_fabric_core_chaincode_shim.ChaincodeStubInterfaceAN6_stringeerAN5_uint8eN5_erroree, i32 0, i32 0), %commonType* getelementptr inbounds (%funcType, %funcType* @__go_td_FppN20_main.SimpleChaincodeN72_github_com_hyperledger_fabric_core_chaincode_shim.ChaincodeStubInterfaceAN6_stringeerAN5_uint8eN5_erroree, i32 0, i32 0), i8* bitcast (void ({ { i8*, i64, i64 }, { i8*, i8* } }*, i8*, i8*, i8*, i8*, { i8*, i64, i64 }*)* @main.query.pN20_main.SimpleChaincode to i8*) }, %method { { i8*, i64 }* @42, { i8*, i64 }* null, %commonType* getelementptr inbounds (%funcType, %funcType* @__go_td_FpN72_github_com_hyperledger_fabric_core_chaincode_shim.ChaincodeStubInterfaceerAN5_uint8eN5_erroree, i32 0, i32 0), %commonType* getelementptr inbounds (%funcType, %funcType* @__go_td_FppN20_main.SimpleChaincodeN72_github_com_hyperledger_fabric_core_chaincode_shim.ChaincodeStubInterfaceerAN5_uint8eN5_erroree, i32 0, i32 0), i8* bitcast (void ({ { i8*, i64, i64 }, { i8*, i8* } }*, i8*, i8*, i8*, i8*)* @main.Init.pN20_main.SimpleChaincode to i8*) }, %method { { i8*, i64 }* @44, { i8*, i64 }* null, %commonType* getelementptr inbounds (%funcType, %funcType* @__go_td_FpN72_github_com_hyperledger_fabric_core_chaincode_shim.ChaincodeStubInterfaceerAN5_uint8eN5_erroree, i32 0, i32 0), %commonType* getelementptr inbounds (%funcType, %funcType* @__go_td_FppN20_main.SimpleChaincodeN72_github_com_hyperledger_fabric_core_chaincode_shim.ChaincodeStubInterfaceerAN5_uint8eN5_erroree, i32 0, i32 0), i8* bitcast (void ({ { i8*, i64, i64 }, { i8*, i8* } }*, i8*, i8*, i8*, i8*)* @main.Invoke.pN20_main.SimpleChaincode to i8*) }]
@46 = internal constant %uncommonType { { i8*, i64 }* null, { i8*, i64 }* null, %methodSlice { %method* getelementptr inbounds ([5 x %method], [5 x %method]* @45, i32 0, i32 0), i64 5, i64 5 } }
@"__go_td_pN20_main.SimpleChaincode$gc" = constant [5 x i8*] [i8* inttoptr (i64 8 to i8*), i8* inttoptr (i64 1 to i8*), i8* null, i8* bitcast ([2 x i8*]* @"__go_tdn_main.SimpleChaincode$gc" to i8*), i8* null]
@__go_type_hash_AIe1e_descriptor = linkonce_odr constant %funcVal { void ()* bitcast (i64 (i8*, i64)* @__go_type_hash_AIe1e to void ()*) }
@__go_type_hash_AIe1e_descriptor.2 = linkonce_odr constant %funcVal { void ()* bitcast (i8 (i8*, i8*, i64)* @__go_type_hash_AIe1e.1 to void ()*) }
@47 = internal constant [15 x i8] c"[1]interface {}"
@48 = internal constant { i8*, i64 } { i8* getelementptr inbounds ([15 x i8], [15 x i8]* @47, i32 0, i32 0), i64 15 }
@__go_td_Ie = linkonce_odr constant %interfaceType { %commonType { i8 20, i8 8, i8 8, i64 16, i32 16, %funcVal* @__go_type_hash_empty_interface_descriptor, %funcVal* @__go_type_equal_empty_interface_descriptor, i8* bitcast ([4 x i8*]* @"__go_td_Ie$gc" to i8*), { i8*, i64 }* @87, %uncommonType* null, %commonType* null }, %imethodSlice zeroinitializer }
@__go_td_AIee = linkonce_odr constant %sliceType { %commonType { i8 23, i8 8, i8 8, i64 24, i32 30, %funcVal* @__go_type_hash_error_descriptor, %funcVal* @__go_type_equal_error_descriptor, i8* bitcast ([5 x i8*]* @"__go_td_AIee$gc" to i8*), { i8*, i64 }* @69, %uncommonType* null, %commonType* null }, %commonType* getelementptr inbounds (%interfaceType, %interfaceType* @__go_td_Ie, i32 0, i32 0) }
@"__go_td_AIe1e$gc" = linkonce_odr constant [9 x i8*] [i8* inttoptr (i64 16 to i8*), i8* inttoptr (i64 3 to i8*), i8* null, i8* inttoptr (i64 1 to i8*), i8* inttoptr (i64 16 to i8*), i8* inttoptr (i64 8 to i8*), i8* null, i8* inttoptr (i64 4 to i8*), i8* null]
@__go_type_hash_AIe2e_descriptor = linkonce_odr constant %funcVal { void ()* bitcast (i64 (i8*, i64)* @__go_type_hash_AIe2e to void ()*) }
@__go_type_hash_AIe2e_descriptor.4 = linkonce_odr constant %funcVal { void ()* bitcast (i8 (i8*, i8*, i64)* @__go_type_hash_AIe2e.3 to void ()*) }
@49 = internal constant [15 x i8] c"[2]interface {}"
@50 = internal constant { i8*, i64 } { i8* getelementptr inbounds ([15 x i8], [15 x i8]* @49, i32 0, i32 0), i64 15 }
@"__go_td_AIe2e$gc" = linkonce_odr constant [9 x i8*] [i8* inttoptr (i64 32 to i8*), i8* inttoptr (i64 3 to i8*), i8* null, i8* inttoptr (i64 2 to i8*), i8* inttoptr (i64 16 to i8*), i8* inttoptr (i64 8 to i8*), i8* null, i8* inttoptr (i64 4 to i8*), i8* null]
@51 = internal constant [3 x i8] c"int"
@52 = internal constant { i8*, i64 } { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @51, i32 0, i32 0), i64 3 }
@53 = internal constant [3 x i8] c"int"
@54 = internal constant { i8*, i64 } { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @53, i32 0, i32 0), i64 3 }
@55 = internal constant %uncommonType { { i8*, i64 }* @54, { i8*, i64 }* null, %methodSlice zeroinitializer }
@"__go_tdn_int$gc" = linkonce_odr constant [2 x i8*] [i8* inttoptr (i64 8 to i8*), i8* null]
@__go_type_hash_Se_descriptor = linkonce_odr constant %funcVal { void ()* bitcast (i64 (i8*, i64)* @__go_type_hash_Se to void ()*) }
@__go_type_equal_Se_descriptor = linkonce_odr constant %funcVal { void ()* bitcast (i8 (i8*, i8*, i64)* @__go_type_equal_Se to void ()*) }
@56 = internal constant [26 x i8] c"\09main\09main.SimpleChaincode"
@57 = internal constant { i8*, i64 } { i8* getelementptr inbounds ([26 x i8], [26 x i8]* @56, i32 0, i32 0), i64 26 }
@58 = internal constant [15 x i8] c"SimpleChaincode"
@59 = internal constant { i8*, i64 } { i8* getelementptr inbounds ([15 x i8], [15 x i8]* @58, i32 0, i32 0), i64 15 }
@60 = internal constant [4 x i8] c"main"
@61 = internal constant { i8*, i64 } { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @60, i32 0, i32 0), i64 4 }
@62 = internal constant %uncommonType { { i8*, i64 }* @59, { i8*, i64 }* @61, %methodSlice zeroinitializer }
@"__go_tdn_main.SimpleChaincode$gc" = constant [2 x i8*] zeroinitializer
@63 = internal constant [6 x i8] c"string"
@64 = internal constant { i8*, i64 } { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @63, i32 0, i32 0), i64 6 }
@65 = internal constant [6 x i8] c"string"
@66 = internal constant { i8*, i64 } { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @65, i32 0, i32 0), i64 6 }
@67 = internal constant %uncommonType { { i8*, i64 }* @66, { i8*, i64 }* null, %methodSlice zeroinitializer }
@"__go_tdn_string$gc" = linkonce_odr constant [4 x i8*] [i8* inttoptr (i64 16 to i8*), i8* inttoptr (i64 7 to i8*), i8* null, i8* null]
@68 = internal constant [14 x i8] c"[]interface {}"
@69 = internal constant { i8*, i64 } { i8* getelementptr inbounds ([14 x i8], [14 x i8]* @68, i32 0, i32 0), i64 14 }
@"__go_td_AIee$gc" = linkonce_odr constant [5 x i8*] [i8* inttoptr (i64 24 to i8*), i8* inttoptr (i64 10 to i8*), i8* null, i8* bitcast ([4 x i8*]* @"__go_td_Ie$gc" to i8*), i8* null]
@70 = internal constant [130 x i8] c"func(*\09main\09main.SimpleChaincode, \09github_com_hyperledger_fabric_core_chaincode_shim\09shim.ChaincodeStubInterface) ([]uint8, error)"
@71 = internal constant { i8*, i64 } { i8* getelementptr inbounds ([130 x i8], [130 x i8]* @70, i32 0, i32 0), i64 130 }
@__go_tdn_github_com_hyperledger_fabric_core_chaincode_shim.ChaincodeStubInterface = external constant %interfaceType
@72 = internal constant [2 x %commonType*] [%commonType* getelementptr inbounds (%ptrType, %ptrType* @__go_td_pN20_main.SimpleChaincode, i32 0, i32 0), %commonType* getelementptr inbounds (%interfaceType, %interfaceType* @__go_tdn_github_com_hyperledger_fabric_core_chaincode_shim.ChaincodeStubInterface, i32 0, i32 0)]
@__go_td_AN5_uint8e = linkonce_odr constant %sliceType { %commonType { i8 23, i8 8, i8 8, i64 24, i32 83888262, %funcVal* @__go_type_hash_error_descriptor, %funcVal* @__go_type_equal_error_descriptor, i8* bitcast ([5 x i8*]* @"__go_td_AN5_uint8e$gc" to i8*), { i8*, i64 }* @89, %uncommonType* null, %commonType* null }, %commonType* @__go_tdn_uint8 }
@__go_tdn_error = linkonce_odr constant %interfaceType { %commonType { i8 20, i8 8, i8 8, i64 16, i32 83888406, %funcVal* @__go_type_hash_interface_descriptor, %funcVal* @__go_type_equal_interface_descriptor, i8* bitcast ([4 x i8*]* @"__go_tdn_error$gc" to i8*), { i8*, i64 }* @93, %uncommonType* @96, %commonType* getelementptr inbounds (%ptrType, %ptrType* @__go_td_pN5_error, i32 0, i32 0) }, %imethodSlice { %imethod* getelementptr inbounds ([1 x %imethod], [1 x %imethod]* @99, i32 0, i32 0), i64 1, i64 1 } }
@73 = internal constant [2 x %commonType*] [%commonType* getelementptr inbounds (%sliceType, %sliceType* @__go_td_AN5_uint8e, i32 0, i32 0), %commonType* getelementptr inbounds (%interfaceType, %interfaceType* @__go_tdn_error, i32 0, i32 0)]
@"__go_td_FppN20_main.SimpleChaincodeN72_github_com_hyperledger_fabric_core_chaincode_shim.ChaincodeStubInterfaceerAN5_uint8eN5_erroree$gc" = linkonce_odr constant [4 x i8*] [i8* inttoptr (i64 8 to i8*), i8* inttoptr (i64 2 to i8*), i8* null, i8* null]
@74 = internal constant [140 x i8] c"func(*\09main\09main.SimpleChaincode, \09github_com_hyperledger_fabric_core_chaincode_shim\09shim.ChaincodeStubInterface, []string) ([]uint8, error)"
@75 = internal constant { i8*, i64 } { i8* getelementptr inbounds ([140 x i8], [140 x i8]* @74, i32 0, i32 0), i64 140 }
@__go_td_AN6_stringe = linkonce_odr constant %sliceType { %commonType { i8 23, i8 8, i8 8, i64 24, i32 100666110, %funcVal* @__go_type_hash_error_descriptor, %funcVal* @__go_type_equal_error_descriptor, i8* bitcast ([5 x i8*]* @"__go_td_AN6_stringe$gc" to i8*), { i8*, i64 }* @91, %uncommonType* null, %commonType* null }, %commonType* @__go_tdn_string }
@76 = internal constant [3 x %commonType*] [%commonType* getelementptr inbounds (%ptrType, %ptrType* @__go_td_pN20_main.SimpleChaincode, i32 0, i32 0), %commonType* getelementptr inbounds (%interfaceType, %interfaceType* @__go_tdn_github_com_hyperledger_fabric_core_chaincode_shim.ChaincodeStubInterface, i32 0, i32 0), %commonType* getelementptr inbounds (%sliceType, %sliceType* @__go_td_AN6_stringe, i32 0, i32 0)]
@77 = internal constant [2 x %commonType*] [%commonType* getelementptr inbounds (%sliceType, %sliceType* @__go_td_AN5_uint8e, i32 0, i32 0), %commonType* getelementptr inbounds (%interfaceType, %interfaceType* @__go_tdn_error, i32 0, i32 0)]
@"__go_td_FppN20_main.SimpleChaincodeN72_github_com_hyperledger_fabric_core_chaincode_shim.ChaincodeStubInterfaceAN6_stringeerAN5_uint8eN5_erroree$gc" = linkonce_odr constant [4 x i8*] [i8* inttoptr (i64 8 to i8*), i8* inttoptr (i64 2 to i8*), i8* null, i8* null]
@78 = internal constant [101 x i8] c"func(\09github_com_hyperledger_fabric_core_chaincode_shim\09shim.ChaincodeStubInterface) ([]uint8, error)"
@79 = internal constant { i8*, i64 } { i8* getelementptr inbounds ([101 x i8], [101 x i8]* @78, i32 0, i32 0), i64 101 }
@80 = internal constant [1 x %commonType*] [%commonType* getelementptr inbounds (%interfaceType, %interfaceType* @__go_tdn_github_com_hyperledger_fabric_core_chaincode_shim.ChaincodeStubInterface, i32 0, i32 0)]
@81 = internal constant [2 x %commonType*] [%commonType* getelementptr inbounds (%sliceType, %sliceType* @__go_td_AN5_uint8e, i32 0, i32 0), %commonType* getelementptr inbounds (%interfaceType, %interfaceType* @__go_tdn_error, i32 0, i32 0)]
@"__go_td_FpN72_github_com_hyperledger_fabric_core_chaincode_shim.ChaincodeStubInterfaceerAN5_uint8eN5_erroree$gc" = linkonce_odr constant [4 x i8*] [i8* inttoptr (i64 8 to i8*), i8* inttoptr (i64 2 to i8*), i8* null, i8* null]
@82 = internal constant [111 x i8] c"func(\09github_com_hyperledger_fabric_core_chaincode_shim\09shim.ChaincodeStubInterface, []string) ([]uint8, error)"
@83 = internal constant { i8*, i64 } { i8* getelementptr inbounds ([111 x i8], [111 x i8]* @82, i32 0, i32 0), i64 111 }
@84 = internal constant [2 x %commonType*] [%commonType* getelementptr inbounds (%interfaceType, %interfaceType* @__go_tdn_github_com_hyperledger_fabric_core_chaincode_shim.ChaincodeStubInterface, i32 0, i32 0), %commonType* getelementptr inbounds (%sliceType, %sliceType* @__go_td_AN6_stringe, i32 0, i32 0)]
@85 = internal constant [2 x %commonType*] [%commonType* getelementptr inbounds (%sliceType, %sliceType* @__go_td_AN5_uint8e, i32 0, i32 0), %commonType* getelementptr inbounds (%interfaceType, %interfaceType* @__go_tdn_error, i32 0, i32 0)]
@"__go_td_FpN72_github_com_hyperledger_fabric_core_chaincode_shim.ChaincodeStubInterfaceAN6_stringeerAN5_uint8eN5_erroree$gc" = linkonce_odr constant [4 x i8*] [i8* inttoptr (i64 8 to i8*), i8* inttoptr (i64 2 to i8*), i8* null, i8* null]
@86 = internal constant [12 x i8] c"interface {}"
@87 = internal constant { i8*, i64 } { i8* getelementptr inbounds ([12 x i8], [12 x i8]* @86, i32 0, i32 0), i64 12 }
@"__go_td_Ie$gc" = linkonce_odr constant [4 x i8*] [i8* inttoptr (i64 16 to i8*), i8* inttoptr (i64 8 to i8*), i8* null, i8* null]
@88 = internal constant [7 x i8] c"[]uint8"
@89 = internal constant { i8*, i64 } { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @88, i32 0, i32 0), i64 7 }
@__go_tdn_uint8 = linkonce_odr constant %commonType { i8 -120, i8 1, i8 1, i64 1, i32 83888248, %funcVal* @__go_type_hash_identity_descriptor, %funcVal* @__go_type_equal_identity_descriptor, i8* bitcast ([2 x i8*]* @"__go_tdn_uint8$gc" to i8*), { i8*, i64 }* @103, %uncommonType* @106, %commonType* null }
@"__go_td_AN5_uint8e$gc" = linkonce_odr constant [5 x i8*] [i8* inttoptr (i64 24 to i8*), i8* inttoptr (i64 10 to i8*), i8* null, i8* bitcast ([2 x i8*]* @"__go_tdn_uint8$gc" to i8*), i8* null]
@90 = internal constant [8 x i8] c"[]string"
@91 = internal constant { i8*, i64 } { i8* getelementptr inbounds ([8 x i8], [8 x i8]* @90, i32 0, i32 0), i64 8 }
@"__go_td_AN6_stringe$gc" = linkonce_odr constant [5 x i8*] [i8* inttoptr (i64 24 to i8*), i8* inttoptr (i64 10 to i8*), i8* null, i8* bitcast ([4 x i8*]* @"__go_tdn_string$gc" to i8*), i8* null]
@92 = internal constant [5 x i8] c"error"
@93 = internal constant { i8*, i64 } { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @92, i32 0, i32 0), i64 5 }
@94 = internal constant [5 x i8] c"error"
@95 = internal constant { i8*, i64 } { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @94, i32 0, i32 0), i64 5 }
@96 = internal constant %uncommonType { { i8*, i64 }* @95, { i8*, i64 }* null, %methodSlice zeroinitializer }
@__go_td_pN5_error = linkonce_odr constant %ptrType { %commonType { i8 54, i8 8, i8 8, i64 8, i32 1342214505, %funcVal* @__go_type_hash_identity_descriptor, %funcVal* @__go_type_equal_identity_descriptor, i8* bitcast ([5 x i8*]* @"__go_td_pN5_error$gc" to i8*), { i8*, i64 }* @101, %uncommonType* null, %commonType* null }, %commonType* getelementptr inbounds (%interfaceType, %interfaceType* @__go_tdn_error, i32 0, i32 0) }
@97 = internal constant [5 x i8] c"Error"
@98 = internal constant { i8*, i64 } { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @97, i32 0, i32 0), i64 5 }
@__go_td_FrN6_stringee = linkonce_odr constant %funcType { %commonType { i8 19, i8 8, i8 8, i64 8, i32 -2147304440, %funcVal* @__go_type_hash_error_descriptor, %funcVal* @__go_type_equal_error_descriptor, i8* bitcast ([4 x i8*]* @"__go_td_FrN6_stringee$gc" to i8*), { i8*, i64 }* @108, %uncommonType* null, %commonType* null }, i8 0, %typeSlice zeroinitializer, %typeSlice { %commonType** getelementptr inbounds ([1 x %commonType*], [1 x %commonType*]* @109, i32 0, i32 0), i64 1, i64 1 } }
@99 = internal constant [1 x %imethod] [%imethod { { i8*, i64 }* @98, { i8*, i64 }* null, %commonType* getelementptr inbounds (%funcType, %funcType* @__go_td_FrN6_stringee, i32 0, i32 0) }]
@"__go_tdn_error$gc" = linkonce_odr constant [4 x i8*] [i8* inttoptr (i64 16 to i8*), i8* inttoptr (i64 9 to i8*), i8* null, i8* null]
@100 = internal constant [6 x i8] c"*error"
@101 = internal constant { i8*, i64 } { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @100, i32 0, i32 0), i64 6 }
@"__go_td_pN5_error$gc" = linkonce_odr constant [5 x i8*] [i8* inttoptr (i64 8 to i8*), i8* inttoptr (i64 1 to i8*), i8* null, i8* bitcast ([4 x i8*]* @"__go_tdn_error$gc" to i8*), i8* null]
@102 = internal constant [5 x i8] c"uint8"
@103 = internal constant { i8*, i64 } { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @102, i32 0, i32 0), i64 5 }
@104 = internal constant [5 x i8] c"uint8"
@105 = internal constant { i8*, i64 } { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @104, i32 0, i32 0), i64 5 }
@106 = internal constant %uncommonType { { i8*, i64 }* @105, { i8*, i64 }* null, %methodSlice zeroinitializer }
@"__go_tdn_uint8$gc" = linkonce_odr constant [2 x i8*] [i8* inttoptr (i64 1 to i8*), i8* null]
@107 = internal constant [13 x i8] c"func() string"
@108 = internal constant { i8*, i64 } { i8* getelementptr inbounds ([13 x i8], [13 x i8]* @107, i32 0, i32 0), i64 13 }
@109 = internal constant [1 x %commonType*] [%commonType* @__go_tdn_string]
@"__go_td_FrN6_stringee$gc" = linkonce_odr constant [4 x i8*] [i8* inttoptr (i64 8 to i8*), i8* inttoptr (i64 2 to i8*), i8* null, i8* null]
; Function Attrs: nounwind
declare { i8*, i64 } @__go_byte_array_to_string(i8* nest, i8*, i64) #0
declare i64 @__go_interface_compare(i8* nest, i8*, i8*, i8*, i8*)
; Function Attrs: nounwind
declare i8* @__go_new(i8* nest, i8*, i64) #0
; Function Attrs: noreturn
declare void @__go_runtime_error(i8* nest, i32) #1
declare i64 @__go_strcmp(i8* nest, i8*, i64, i8*, i64)
declare { i8*, i64 } @__go_string_plus(i8* nest, i8*, i64, i8*, i64)
; Function Attrs: nounwind
declare void @__go_string_to_byte_array({ i8*, i64, i64 }* sret, i8* nest, i8*, i64) #0
define void @main.Init.pN20_main.SimpleChaincode({ { i8*, i64, i64 }, { i8*, i8* } }* sret, i8* nest, i8*, i8*, i8*) #2 !dbg !5 {
prologue:
%5 = alloca { { i8*, i64 }, { i8*, i64, i64 } }, !dbg !30
%6 = alloca { i8*, i64 }, !dbg !30
%7 = alloca { i8*, i8* }, !dbg !30
%8 = alloca { i8*, i64 }, !dbg !30
%9 = alloca { i64, { i8*, i8* } }, !dbg !30
%10 = alloca { i8*, i8* }, !dbg !30
%11 = alloca { i8*, i8* }, !dbg !30
%12 = alloca { i8*, i64 }, !dbg !30
%13 = alloca { i8*, i8* }, !dbg !30
%14 = alloca { i8*, i64 }, !dbg !30
%15 = alloca { i64, { i8*, i8* } }, !dbg !30
%16 = alloca { i8*, i8* }, !dbg !30
%17 = alloca { i8*, i8* }, !dbg !30
%18 = alloca { i8*, i64 }, !dbg !30
%19 = alloca { i8*, i8* }, !dbg !30
%20 = alloca { i8*, i64 }, !dbg !30
%21 = alloca { i8*, i64, i64 }, !dbg !30
%22 = alloca { i64, { i8*, i8* } }, !dbg !30
%23 = alloca { i8*, i64 }, !dbg !30
%24 = alloca { i8*, i64 }, !dbg !30
%25 = alloca { i8*, i64, i64 }, !dbg !30
%26 = alloca { i8*, i64 }, !dbg !30
%27 = alloca { i8*, i64, i64 }, !dbg !30
%28 = alloca { i8*, i8* }, !dbg !30
%29 = alloca { i8*, i8* }, !dbg !30
%30 = alloca { i8*, i8* }, !dbg !30
%31 = alloca { i8*, i64 }, !dbg !30
%32 = alloca { i8*, i64 }, !dbg !30
%33 = alloca { i8*, i64, i64 }, !dbg !30
%34 = alloca { i8*, i64 }, !dbg !30
%35 = alloca { i8*, i64, i64 }, !dbg !30
%36 = alloca { i8*, i8* }, !dbg !30
%37 = alloca { i8*, i8* }, !dbg !30
%38 = alloca { i8*, i8* }, !dbg !30
%39 = alloca { i8*, i8* }, !dbg !30
%40 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %39, i32 0, i32 0, !dbg !30
store i8* %3, i8** %40, !dbg !30
%41 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %39, i32 0, i32 1, !dbg !30
store i8* %4, i8** %41, !dbg !30
%42 = load { i8*, i8* }, { i8*, i8* }* %39, !dbg !30
br label %.0.entry, !dbg !30
.0.entry: ; preds = %prologue
%43 = extractvalue { i8*, i8* } %42, 0, !dbg !31
%44 = extractvalue { i8*, i8* } %42, 1, !dbg !31
%45 = bitcast i8* %43 to i8**, !dbg !31
%46 = getelementptr i8*, i8** %45, i32 9, !dbg !31
%47 = load i8*, i8** %46, !dbg !31
%48 = bitcast i8* %47 to void ({ { i8*, i64 }, { i8*, i64, i64 } }*, i8*, i8*)*, !dbg !31
call void %48({ { i8*, i64 }, { i8*, i64, i64 } }* sret %5, i8* nest undef, i8* %44), !dbg !31
%49 = getelementptr inbounds { { i8*, i64 }, { i8*, i64, i64 } }, { { i8*, i64 }, { i8*, i64, i64 } }* %5, i32 0, i32 0, !dbg !31
%50 = load { i8*, i64 }, { i8*, i64 }* %49, !dbg !31
%51 = getelementptr inbounds { { i8*, i64 }, { i8*, i64, i64 } }, { { i8*, i64 }, { i8*, i64, i64 } }* %5, i32 0, i32 1, !dbg !31
%52 = load { i8*, i64, i64 }, { i8*, i64, i64 }* %51, !dbg !31
%53 = extractvalue { i8*, i64, i64 } %52, 1, !dbg !32
%54 = icmp eq i64 %53, 4, !dbg !33
%55 = zext i1 %54 to i8, !dbg !33
%56 = xor i8 %55, 1, !dbg !33
%57 = trunc i8 %56 to i1, !dbg !34
br i1 %57, label %.1.if.then, label %.2.if.done, !dbg !34
.1.if.then: ; preds = %.0.entry
store { i8*, i64 } { i8* getelementptr inbounds ([42 x i8], [42 x i8]* @0, i32 0, i32 0), i64 42 }, { i8*, i64 }* %6, !dbg !35
%58 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %6, i32 0, i32 0, !dbg !35
%59 = load i8*, i8** %58, !dbg !35
%60 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %6, i32 0, i32 1, !dbg !35
%61 = load i64, i64* %60, !dbg !35
%62 = call { i8*, i8* } @errors.New(i8* nest undef, i8* %59, i64 %61), !dbg !35
%63 = extractvalue { i8*, i8* } %62, 0, !dbg !35
%64 = extractvalue { i8*, i8* } %62, 1, !dbg !35
%65 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %7, i32 0, i32 0, !dbg !35
store i8* %63, i8** %65, !dbg !35
%66 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %7, i32 0, i32 1, !dbg !35
store i8* %64, i8** %66, !dbg !35
%67 = load { i8*, i8* }, { i8*, i8* }* %7, !dbg !35
%68 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %0, i32 0, i32 0, !dbg !36
store { i8*, i64, i64 } zeroinitializer, { i8*, i64, i64 }* %68, !dbg !36
%69 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %0, i32 0, i32 1, !dbg !36
store { i8*, i8* } %67, { i8*, i8* }* %69, !dbg !36
ret void, !dbg !36
.2.if.done: ; preds = %.0.entry
%70 = extractvalue { i8*, i64, i64 } %52, 0, !dbg !37
%71 = extractvalue { i8*, i64, i64 } %52, 1, !dbg !37
%72 = icmp sle i64 %71, 0, !dbg !37
%73 = or i1 false, %72, !dbg !37
br i1 %73, label %218, label %219, !dbg !37, !prof !38
.3.if.then: ; preds = %229
store { i8*, i64 } { i8* getelementptr inbounds ([41 x i8], [41 x i8]* @1, i32 0, i32 0), i64 41 }, { i8*, i64 }* %12, !dbg !39
%74 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %12, i32 0, i32 0, !dbg !39
%75 = load i8*, i8** %74, !dbg !39
%76 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %12, i32 0, i32 1, !dbg !39
%77 = load i64, i64* %76, !dbg !39
%78 = call { i8*, i8* } @errors.New(i8* nest undef, i8* %75, i64 %77), !dbg !39
%79 = extractvalue { i8*, i8* } %78, 0, !dbg !39
%80 = extractvalue { i8*, i8* } %78, 1, !dbg !39
%81 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %13, i32 0, i32 0, !dbg !39
store i8* %79, i8** %81, !dbg !39
%82 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %13, i32 0, i32 1, !dbg !39
store i8* %80, i8** %82, !dbg !39
%83 = load { i8*, i8* }, { i8*, i8* }* %13, !dbg !39
%84 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %0, i32 0, i32 0, !dbg !40
store { i8*, i64, i64 } zeroinitializer, { i8*, i64, i64 }* %84, !dbg !40
%85 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %0, i32 0, i32 1, !dbg !40
store { i8*, i8* } %83, { i8*, i8* }* %85, !dbg !40
ret void, !dbg !40
.4.if.done: ; preds = %229
%86 = extractvalue { i8*, i64, i64 } %52, 0, !dbg !41
%87 = extractvalue { i8*, i64, i64 } %52, 1, !dbg !41
%88 = icmp sle i64 %87, 2, !dbg !41
%89 = or i1 false, %88, !dbg !41
br i1 %89, label %218, label %256, !dbg !41, !prof !38
.5.if.then: ; preds = %266
store { i8*, i64 } { i8* getelementptr inbounds ([41 x i8], [41 x i8]* @2, i32 0, i32 0), i64 41 }, { i8*, i64 }* %18, !dbg !42
%90 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %18, i32 0, i32 0, !dbg !42
%91 = load i8*, i8** %90, !dbg !42
%92 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %18, i32 0, i32 1, !dbg !42
%93 = load i64, i64* %92, !dbg !42
%94 = call { i8*, i8* } @errors.New(i8* nest undef, i8* %91, i64 %93), !dbg !42
%95 = extractvalue { i8*, i8* } %94, 0, !dbg !42
%96 = extractvalue { i8*, i8* } %94, 1, !dbg !42
%97 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %19, i32 0, i32 0, !dbg !42
store i8* %95, i8** %97, !dbg !42
%98 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %19, i32 0, i32 1, !dbg !42
store i8* %96, i8** %98, !dbg !42
%99 = load { i8*, i8* }, { i8*, i8* }* %19, !dbg !42
%100 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %0, i32 0, i32 0, !dbg !43
store { i8*, i64, i64 } zeroinitializer, { i8*, i64, i64 }* %100, !dbg !43
%101 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %0, i32 0, i32 1, !dbg !43
store { i8*, i8* } %99, { i8*, i8* }* %101, !dbg !43
ret void, !dbg !43
.6.if.done: ; preds = %266
%102 = call i8* @__go_new(i8* nest undef, i8* getelementptr inbounds (%arrayType, %arrayType* @__go_td_AIe2e, i32 0, i32 0, i32 0), i64 32), !dbg !44
%varargs = bitcast i8* %102 to [2 x { i8*, i8* }]*, !dbg !44
%103 = bitcast [2 x { i8*, i8* }]* %varargs to i8*, !dbg !44
%104 = bitcast i8* %103 to { i8*, i8* }*, !dbg !34
%105 = getelementptr { i8*, i8* }, { i8*, i8* }* %104, i64 0, !dbg !34
%106 = bitcast { i8*, i8* }* %105 to i8*, !dbg !34
%107 = call i8* @__go_new(i8* nest undef, i8* getelementptr inbounds (%commonType, %commonType* @__go_tdn_int, i32 0, i32 0), i64 8), !dbg !34
%108 = bitcast i8* %107 to i64*, !dbg !34
store i64 %240, i64* %108, !dbg !34
%109 = bitcast i64* %108 to i8*, !dbg !34
%110 = insertvalue { i8*, i8* } { i8* getelementptr inbounds (%commonType, %commonType* @__go_tdn_int, i32 0, i32 0), i8* undef }, i8* %109, 1, !dbg !34
%111 = bitcast i8* %106 to { i8*, i8* }*, !dbg !45
store { i8*, i8* } %110, { i8*, i8* }* %111, !dbg !45
%112 = bitcast i8* %103 to { i8*, i8* }*, !dbg !34
%113 = getelementptr { i8*, i8* }, { i8*, i8* }* %112, i64 1, !dbg !34
%114 = bitcast { i8*, i8* }* %113 to i8*, !dbg !34
%115 = call i8* @__go_new(i8* nest undef, i8* getelementptr inbounds (%commonType, %commonType* @__go_tdn_int, i32 0, i32 0), i64 8), !dbg !34
%116 = bitcast i8* %115 to i64*, !dbg !34
store i64 %277, i64* %116, !dbg !34
%117 = bitcast i64* %116 to i8*, !dbg !34
%118 = insertvalue { i8*, i8* } { i8* getelementptr inbounds (%commonType, %commonType* @__go_tdn_int, i32 0, i32 0), i8* undef }, i8* %117, 1, !dbg !34
%119 = bitcast i8* %114 to { i8*, i8* }*, !dbg !46
store { i8*, i8* } %118, { i8*, i8* }* %119, !dbg !46
%120 = getelementptr inbounds i8, i8* %103, i64 0, !dbg !34
%121 = insertvalue { i8*, i64, i64 } undef, i8* %120, 0, !dbg !34
%122 = insertvalue { i8*, i64, i64 } %121, i64 2, 1, !dbg !34
%123 = insertvalue { i8*, i64, i64 } %122, i64 2, 2, !dbg !34
store { i8*, i64 } { i8* getelementptr inbounds ([21 x i8], [21 x i8]* @3, i32 0, i32 0), i64 21 }, { i8*, i64 }* %20, !dbg !47
%124 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %20, i32 0, i32 0, !dbg !47
%125 = load i8*, i8** %124, !dbg !47
%126 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %20, i32 0, i32 1, !dbg !47
%127 = load i64, i64* %126, !dbg !47
store { i8*, i64, i64 } %123, { i8*, i64, i64 }* %21, !dbg !47
call void @fmt.Printf({ i64, { i8*, i8* } }* sret %22, i8* nest undef, i8* %125, i64 %127, { i8*, i64, i64 }* byval %21), !dbg !47
%128 = getelementptr inbounds { i64, { i8*, i8* } }, { i64, { i8*, i8* } }* %22, i32 0, i32 0, !dbg !47
%129 = load i64, i64* %128, !dbg !47
%130 = getelementptr inbounds { i64, { i8*, i8* } }, { i64, { i8*, i8* } }* %22, i32 0, i32 1, !dbg !47
%131 = load { i8*, i8* }, { i8*, i8* }* %130, !dbg !47
%132 = call { i8*, i64 } @strconv.Itoa(i8* nest undef, i64 %240), !dbg !48
%133 = extractvalue { i8*, i64 } %132, 0, !dbg !48
%134 = extractvalue { i8*, i64 } %132, 1, !dbg !48
%135 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %23, i32 0, i32 0, !dbg !48
store i8* %133, i8** %135, !dbg !48
%136 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %23, i32 0, i32 1, !dbg !48
store i64 %134, i64* %136, !dbg !48
%137 = load { i8*, i64 }, { i8*, i64 }* %23, !dbg !48
store { i8*, i64 } %137, { i8*, i64 }* %24, !dbg !49
%138 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %24, i32 0, i32 0, !dbg !49
%139 = load i8*, i8** %138, !dbg !49
%140 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %24, i32 0, i32 1, !dbg !49
%141 = load i64, i64* %140, !dbg !49
call void @__go_string_to_byte_array({ i8*, i64, i64 }* sret %25, i8* nest undef, i8* %139, i64 %141), !dbg !49
%142 = load { i8*, i64, i64 }, { i8*, i64, i64 }* %25, !dbg !49
%143 = extractvalue { i8*, i8* } %42, 0, !dbg !50
%144 = extractvalue { i8*, i8* } %42, 1, !dbg !50
%145 = bitcast i8* %143 to i8**, !dbg !50
%146 = getelementptr i8*, i8** %145, i32 20, !dbg !50
%147 = load i8*, i8** %146, !dbg !50
store { i8*, i64 } %224, { i8*, i64 }* %26, !dbg !50
%148 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %26, i32 0, i32 0, !dbg !50
%149 = load i8*, i8** %148, !dbg !50
%150 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %26, i32 0, i32 1, !dbg !50
%151 = load i64, i64* %150, !dbg !50
store { i8*, i64, i64 } %142, { i8*, i64, i64 }* %27, !dbg !50
%152 = bitcast i8* %147 to { i8*, i8* } (i8*, i8*, i8*, i64, { i8*, i64, i64 }*)*, !dbg !50
%153 = call { i8*, i8* } %152(i8* nest undef, i8* %144, i8* %149, i64 %151, { i8*, i64, i64 }* byval %27), !dbg !50
%154 = extractvalue { i8*, i8* } %153, 0, !dbg !50
%155 = extractvalue { i8*, i8* } %153, 1, !dbg !50
%156 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %28, i32 0, i32 0, !dbg !50
store i8* %154, i8** %156, !dbg !50
%157 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %28, i32 0, i32 1, !dbg !50
store i8* %155, i8** %157, !dbg !50
%158 = load { i8*, i8* }, { i8*, i8* }* %28, !dbg !50
store { i8*, i8* } %158, { i8*, i8* }* %29, !dbg !51
%159 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %29, i32 0, i32 0, !dbg !51
%160 = load i8*, i8** %159, !dbg !51
%161 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %29, i32 0, i32 1, !dbg !51
%162 = load i8*, i8** %161, !dbg !51
store { i8*, i8* } zeroinitializer, { i8*, i8* }* %30, !dbg !51
%163 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %30, i32 0, i32 0, !dbg !51
%164 = load i8*, i8** %163, !dbg !51
%165 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %30, i32 0, i32 1, !dbg !51
%166 = load i8*, i8** %165, !dbg !51
%167 = call i64 @__go_interface_compare(i8* nest undef, i8* %160, i8* %162, i8* %164, i8* %166), !dbg !51
%168 = icmp eq i64 %167, 0, !dbg !51
%169 = zext i1 %168 to i8, !dbg !51
%170 = xor i8 %169, 1, !dbg !51
%171 = trunc i8 %170 to i1, !dbg !34
br i1 %171, label %.7.if.then, label %.8.if.done, !dbg !34
.7.if.then: ; preds = %.6.if.done
%172 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %0, i32 0, i32 0, !dbg !52
store { i8*, i64, i64 } zeroinitializer, { i8*, i64, i64 }* %172, !dbg !52
%173 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %0, i32 0, i32 1, !dbg !52
store { i8*, i8* } %158, { i8*, i8* }* %173, !dbg !52
ret void, !dbg !52
.8.if.done: ; preds = %.6.if.done
%174 = call { i8*, i64 } @strconv.Itoa(i8* nest undef, i64 %277), !dbg !53
%175 = extractvalue { i8*, i64 } %174, 0, !dbg !53
%176 = extractvalue { i8*, i64 } %174, 1, !dbg !53
%177 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %31, i32 0, i32 0, !dbg !53
store i8* %175, i8** %177, !dbg !53
%178 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %31, i32 0, i32 1, !dbg !53
store i64 %176, i64* %178, !dbg !53
%179 = load { i8*, i64 }, { i8*, i64 }* %31, !dbg !53
store { i8*, i64 } %179, { i8*, i64 }* %32, !dbg !54
%180 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %32, i32 0, i32 0, !dbg !54
%181 = load i8*, i8** %180, !dbg !54
%182 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %32, i32 0, i32 1, !dbg !54
%183 = load i64, i64* %182, !dbg !54
call void @__go_string_to_byte_array({ i8*, i64, i64 }* sret %33, i8* nest undef, i8* %181, i64 %183), !dbg !54
%184 = load { i8*, i64, i64 }, { i8*, i64, i64 }* %33, !dbg !54
%185 = extractvalue { i8*, i8* } %42, 0, !dbg !55
%186 = extractvalue { i8*, i8* } %42, 1, !dbg !55
%187 = bitcast i8* %185 to i8**, !dbg !55
%188 = getelementptr i8*, i8** %187, i32 20, !dbg !55
%189 = load i8*, i8** %188, !dbg !55
store { i8*, i64 } %261, { i8*, i64 }* %34, !dbg !55
%190 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %34, i32 0, i32 0, !dbg !55
%191 = load i8*, i8** %190, !dbg !55
%192 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %34, i32 0, i32 1, !dbg !55
%193 = load i64, i64* %192, !dbg !55
store { i8*, i64, i64 } %184, { i8*, i64, i64 }* %35, !dbg !55
%194 = bitcast i8* %189 to { i8*, i8* } (i8*, i8*, i8*, i64, { i8*, i64, i64 }*)*, !dbg !55
%195 = call { i8*, i8* } %194(i8* nest undef, i8* %186, i8* %191, i64 %193, { i8*, i64, i64 }* byval %35), !dbg !55
%196 = extractvalue { i8*, i8* } %195, 0, !dbg !55
%197 = extractvalue { i8*, i8* } %195, 1, !dbg !55
%198 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %36, i32 0, i32 0, !dbg !55
store i8* %196, i8** %198, !dbg !55
%199 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %36, i32 0, i32 1, !dbg !55
store i8* %197, i8** %199, !dbg !55
%200 = load { i8*, i8* }, { i8*, i8* }* %36, !dbg !55
store { i8*, i8* } %200, { i8*, i8* }* %37, !dbg !56
%201 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %37, i32 0, i32 0, !dbg !56
%202 = load i8*, i8** %201, !dbg !56
%203 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %37, i32 0, i32 1, !dbg !56
%204 = load i8*, i8** %203, !dbg !56
store { i8*, i8* } zeroinitializer, { i8*, i8* }* %38, !dbg !56
%205 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %38, i32 0, i32 0, !dbg !56
%206 = load i8*, i8** %205, !dbg !56
%207 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %38, i32 0, i32 1, !dbg !56
%208 = load i8*, i8** %207, !dbg !56
%209 = call i64 @__go_interface_compare(i8* nest undef, i8* %202, i8* %204, i8* %206, i8* %208), !dbg !56
%210 = icmp eq i64 %209, 0, !dbg !56
%211 = zext i1 %210 to i8, !dbg !56
%212 = xor i8 %211, 1, !dbg !56
%213 = trunc i8 %212 to i1, !dbg !34
br i1 %213, label %.9.if.then, label %.10.if.done, !dbg !34
.9.if.then: ; preds = %.8.if.done
%214 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %0, i32 0, i32 0, !dbg !57
store { i8*, i64, i64 } zeroinitializer, { i8*, i64, i64 }* %214, !dbg !57
%215 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %0, i32 0, i32 1, !dbg !57
store { i8*, i8* } %200, { i8*, i8* }* %215, !dbg !57
ret void, !dbg !57
.10.if.done: ; preds = %.8.if.done
%216 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %0, i32 0, i32 0, !dbg !58
store { i8*, i64, i64 } zeroinitializer, { i8*, i64, i64 }* %216, !dbg !58
%217 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %0, i32 0, i32 1, !dbg !58
store { i8*, i8* } zeroinitializer, { i8*, i8* }* %217, !dbg !58
ret void, !dbg !58
; <label>:218: ; preds = %256, %.4.if.done, %219, %.2.if.done
call void @__go_runtime_error(i8* nest undef, i32 0), !dbg !37
unreachable, !dbg !37
; <label>:219: ; preds = %.2.if.done
%220 = bitcast i8* %70 to { i8*, i64 }*, !dbg !37
%221 = getelementptr { i8*, i64 }, { i8*, i64 }* %220, i64 0, !dbg !37
%222 = bitcast { i8*, i64 }* %221 to i8*, !dbg !37
%223 = bitcast i8* %222 to { i8*, i64 }*, !dbg !37
%224 = load { i8*, i64 }, { i8*, i64 }* %223, !dbg !37
%225 = extractvalue { i8*, i64, i64 } %52, 0, !dbg !59
%226 = extractvalue { i8*, i64, i64 } %52, 1, !dbg !59
%227 = icmp sle i64 %226, 1, !dbg !59
%228 = or i1 false, %227, !dbg !59
br i1 %228, label %218, label %229, !dbg !59, !prof !38
; <label>:229: ; preds = %219
%230 = bitcast i8* %225 to { i8*, i64 }*, !dbg !59
%231 = getelementptr { i8*, i64 }, { i8*, i64 }* %230, i64 1, !dbg !59
%232 = bitcast { i8*, i64 }* %231 to i8*, !dbg !59
%233 = bitcast i8* %232 to { i8*, i64 }*, !dbg !59
%234 = load { i8*, i64 }, { i8*, i64 }* %233, !dbg !59
store { i8*, i64 } %234, { i8*, i64 }* %8, !dbg !60
%235 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %8, i32 0, i32 0, !dbg !60
%236 = load i8*, i8** %235, !dbg !60
%237 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %8, i32 0, i32 1, !dbg !60
%238 = load i64, i64* %237, !dbg !60
call void @strconv.Atoi({ i64, { i8*, i8* } }* sret %9, i8* nest undef, i8* %236, i64 %238), !dbg !60
%239 = getelementptr inbounds { i64, { i8*, i8* } }, { i64, { i8*, i8* } }* %9, i32 0, i32 0, !dbg !60
%240 = load i64, i64* %239, !dbg !60
%241 = getelementptr inbounds { i64, { i8*, i8* } }, { i64, { i8*, i8* } }* %9, i32 0, i32 1, !dbg !60
%242 = load { i8*, i8* }, { i8*, i8* }* %241, !dbg !60
store { i8*, i8* } %242, { i8*, i8* }* %10, !dbg !61
%243 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %10, i32 0, i32 0, !dbg !61
%244 = load i8*, i8** %243, !dbg !61
%245 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %10, i32 0, i32 1, !dbg !61
%246 = load i8*, i8** %245, !dbg !61
store { i8*, i8* } zeroinitializer, { i8*, i8* }* %11, !dbg !61
%247 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %11, i32 0, i32 0, !dbg !61
%248 = load i8*, i8** %247, !dbg !61
%249 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %11, i32 0, i32 1, !dbg !61
%250 = load i8*, i8** %249, !dbg !61
%251 = call i64 @__go_interface_compare(i8* nest undef, i8* %244, i8* %246, i8* %248, i8* %250), !dbg !61
%252 = icmp eq i64 %251, 0, !dbg !61
%253 = zext i1 %252 to i8, !dbg !61
%254 = xor i8 %253, 1, !dbg !61
%255 = trunc i8 %254 to i1, !dbg !34
br i1 %255, label %.3.if.then, label %.4.if.done, !dbg !34
; <label>:256: ; preds = %.4.if.done
%257 = bitcast i8* %86 to { i8*, i64 }*, !dbg !41
%258 = getelementptr { i8*, i64 }, { i8*, i64 }* %257, i64 2, !dbg !41
%259 = bitcast { i8*, i64 }* %258 to i8*, !dbg !41
%260 = bitcast i8* %259 to { i8*, i64 }*, !dbg !41
%261 = load { i8*, i64 }, { i8*, i64 }* %260, !dbg !41
%262 = extractvalue { i8*, i64, i64 } %52, 0, !dbg !62
%263 = extractvalue { i8*, i64, i64 } %52, 1, !dbg !62
%264 = icmp sle i64 %263, 3, !dbg !62
%265 = or i1 false, %264, !dbg !62
br i1 %265, label %218, label %266, !dbg !62, !prof !38
; <label>:266: ; preds = %256
%267 = bitcast i8* %262 to { i8*, i64 }*, !dbg !62
%268 = getelementptr { i8*, i64 }, { i8*, i64 }* %267, i64 3, !dbg !62
%269 = bitcast { i8*, i64 }* %268 to i8*, !dbg !62
%270 = bitcast i8* %269 to { i8*, i64 }*, !dbg !62
%271 = load { i8*, i64 }, { i8*, i64 }* %270, !dbg !62
store { i8*, i64 } %271, { i8*, i64 }* %14, !dbg !63
%272 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %14, i32 0, i32 0, !dbg !63
%273 = load i8*, i8** %272, !dbg !63
%274 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %14, i32 0, i32 1, !dbg !63
%275 = load i64, i64* %274, !dbg !63
call void @strconv.Atoi({ i64, { i8*, i8* } }* sret %15, i8* nest undef, i8* %273, i64 %275), !dbg !63
%276 = getelementptr inbounds { i64, { i8*, i8* } }, { i64, { i8*, i8* } }* %15, i32 0, i32 0, !dbg !63
%277 = load i64, i64* %276, !dbg !63
%278 = getelementptr inbounds { i64, { i8*, i8* } }, { i64, { i8*, i8* } }* %15, i32 0, i32 1, !dbg !63
%279 = load { i8*, i8* }, { i8*, i8* }* %278, !dbg !63
store { i8*, i8* } %279, { i8*, i8* }* %16, !dbg !64
%280 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %16, i32 0, i32 0, !dbg !64
%281 = load i8*, i8** %280, !dbg !64
%282 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %16, i32 0, i32 1, !dbg !64
%283 = load i8*, i8** %282, !dbg !64
store { i8*, i8* } zeroinitializer, { i8*, i8* }* %17, !dbg !64
%284 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %17, i32 0, i32 0, !dbg !64
%285 = load i8*, i8** %284, !dbg !64
%286 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %17, i32 0, i32 1, !dbg !64
%287 = load i8*, i8** %286, !dbg !64
%288 = call i64 @__go_interface_compare(i8* nest undef, i8* %281, i8* %283, i8* %285, i8* %287), !dbg !64
%289 = icmp eq i64 %288, 0, !dbg !64
%290 = zext i1 %289 to i8, !dbg !64
%291 = xor i8 %290, 1, !dbg !64
%292 = trunc i8 %291 to i1, !dbg !34
br i1 %292, label %.5.if.then, label %.6.if.done, !dbg !34
}
declare { i8*, i8* } @errors.New(i8* nest, i8*, i64)
declare void @strconv.Atoi({ i64, { i8*, i8* } }* sret, i8* nest, i8*, i64)
declare void @fmt.Printf({ i64, { i8*, i8* } }* sret, i8* nest, i8*, i64, { i8*, i64, i64 }* byval)
declare { i8*, i64 } @strconv.Itoa(i8* nest, i64)
define void @main.Invoke.pN20_main.SimpleChaincode({ { i8*, i64, i64 }, { i8*, i8* } }* sret, i8* nest, i8*, i8*, i8*) #2 !dbg !65 {
prologue:
%5 = alloca { { i8*, i64 }, { i8*, i64, i64 } }, !dbg !66
%6 = alloca { i8*, i64 }, !dbg !66
%7 = alloca { i8*, i64 }, !dbg !66
%8 = alloca { i8*, i8* }, !dbg !66
%9 = alloca { i8*, i64, i64 }, !dbg !66
%10 = alloca { { i8*, i64, i64 }, { i8*, i8* } }, !dbg !66
%11 = alloca { i8*, i64 }, !dbg !66
%12 = alloca { i8*, i64 }, !dbg !66
%13 = alloca { i8*, i8* }, !dbg !66
%14 = alloca { i8*, i64, i64 }, !dbg !66
%15 = alloca { { i8*, i64, i64 }, { i8*, i8* } }, !dbg !66
%16 = alloca { i8*, i64 }, !dbg !66
%17 = alloca { i8*, i64 }, !dbg !66
%18 = alloca { i8*, i8* }, !dbg !66
%19 = alloca { i8*, i64, i64 }, !dbg !66
%20 = alloca { { i8*, i64, i64 }, { i8*, i8* } }, !dbg !66
%21 = alloca { i8*, i64 }, !dbg !66
%22 = alloca { i8*, i8* }, !dbg !66
%23 = alloca { i8*, i8* }, !dbg !66
%24 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %23, i32 0, i32 0, !dbg !66
store i8* %3, i8** %24, !dbg !66
%25 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %23, i32 0, i32 1, !dbg !66
store i8* %4, i8** %25, !dbg !66
%26 = load { i8*, i8* }, { i8*, i8* }* %23, !dbg !66
br label %.0.entry, !dbg !66
.0.entry: ; preds = %prologue
%27 = extractvalue { i8*, i8* } %26, 0, !dbg !67
%28 = extractvalue { i8*, i8* } %26, 1, !dbg !67
%29 = bitcast i8* %27 to i8**, !dbg !67
%30 = getelementptr i8*, i8** %29, i32 9, !dbg !67
%31 = load i8*, i8** %30, !dbg !67
%32 = bitcast i8* %31 to void ({ { i8*, i64 }, { i8*, i64, i64 } }*, i8*, i8*)*, !dbg !67
call void %32({ { i8*, i64 }, { i8*, i64, i64 } }* sret %5, i8* nest undef, i8* %28), !dbg !67
%33 = getelementptr inbounds { { i8*, i64 }, { i8*, i64, i64 } }, { { i8*, i64 }, { i8*, i64, i64 } }* %5, i32 0, i32 0, !dbg !67
%34 = load { i8*, i64 }, { i8*, i64 }* %33, !dbg !67
%35 = getelementptr inbounds { { i8*, i64 }, { i8*, i64, i64 } }, { { i8*, i64 }, { i8*, i64, i64 } }* %5, i32 0, i32 1, !dbg !67
%36 = load { i8*, i64, i64 }, { i8*, i64, i64 }* %35, !dbg !67
store { i8*, i64 } %34, { i8*, i64 }* %6, !dbg !68
%37 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %6, i32 0, i32 0, !dbg !68
%38 = load i8*, i8** %37, !dbg !68
%39 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %6, i32 0, i32 1, !dbg !68
%40 = load i64, i64* %39, !dbg !68
store { i8*, i64 } { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @4, i32 0, i32 0), i64 6 }, { i8*, i64 }* %7, !dbg !68
%41 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %7, i32 0, i32 0, !dbg !68
%42 = load i8*, i8** %41, !dbg !68
%43 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %7, i32 0, i32 1, !dbg !68
%44 = load i64, i64* %43, !dbg !68
%45 = call i64 @__go_strcmp(i8* nest undef, i8* %38, i64 %40, i8* %42, i64 %44), !dbg !68
%46 = icmp eq i64 %45, 0, !dbg !68
%47 = zext i1 %46 to i8, !dbg !68
%48 = trunc i8 %47 to i1, !dbg !69
br i1 %48, label %.1.if.then, label %.2.if.else, !dbg !69
.1.if.then: ; preds = %.0.entry
store { i8*, i8* } %26, { i8*, i8* }* %8, !dbg !70
%49 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %8, i32 0, i32 0, !dbg !70
%50 = load i8*, i8** %49, !dbg !70
%51 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %8, i32 0, i32 1, !dbg !70
%52 = load i8*, i8** %51, !dbg !70
store { i8*, i64, i64 } %36, { i8*, i64, i64 }* %9, !dbg !70
call void @main.invoke.pN20_main.SimpleChaincode({ { i8*, i64, i64 }, { i8*, i8* } }* sret %10, i8* nest undef, i8* %2, i8* %50, i8* %52, { i8*, i64, i64 }* byval %9), !dbg !70
%53 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %10, i32 0, i32 0, !dbg !70
%54 = load { i8*, i64, i64 }, { i8*, i64, i64 }* %53, !dbg !70
%55 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %10, i32 0, i32 1, !dbg !70
%56 = load { i8*, i8* }, { i8*, i8* }* %55, !dbg !70
%57 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %0, i32 0, i32 0, !dbg !71
store { i8*, i64, i64 } %54, { i8*, i64, i64 }* %57, !dbg !71
%58 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %0, i32 0, i32 1, !dbg !71
store { i8*, i8* } %56, { i8*, i8* }* %58, !dbg !71
ret void, !dbg !71
.2.if.else: ; preds = %.0.entry
store { i8*, i64 } %34, { i8*, i64 }* %11, !dbg !72
%59 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %11, i32 0, i32 0, !dbg !72
%60 = load i8*, i8** %59, !dbg !72
%61 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %11, i32 0, i32 1, !dbg !72
%62 = load i64, i64* %61, !dbg !72
store { i8*, i64 } { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @5, i32 0, i32 0), i64 6 }, { i8*, i64 }* %12, !dbg !72
%63 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %12, i32 0, i32 0, !dbg !72
%64 = load i8*, i8** %63, !dbg !72
%65 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %12, i32 0, i32 1, !dbg !72
%66 = load i64, i64* %65, !dbg !72
%67 = call i64 @__go_strcmp(i8* nest undef, i8* %60, i64 %62, i8* %64, i64 %66), !dbg !72
%68 = icmp eq i64 %67, 0, !dbg !72
%69 = zext i1 %68 to i8, !dbg !72
%70 = trunc i8 %69 to i1, !dbg !69
br i1 %70, label %.3.if.then, label %.4.if.else, !dbg !69
.3.if.then: ; preds = %.2.if.else
store { i8*, i8* } %26, { i8*, i8* }* %13, !dbg !73
%71 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %13, i32 0, i32 0, !dbg !73
%72 = load i8*, i8** %71, !dbg !73
%73 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %13, i32 0, i32 1, !dbg !73
%74 = load i8*, i8** %73, !dbg !73
store { i8*, i64, i64 } %36, { i8*, i64, i64 }* %14, !dbg !73
call void @main.delete.pN20_main.SimpleChaincode({ { i8*, i64, i64 }, { i8*, i8* } }* sret %15, i8* nest undef, i8* %2, i8* %72, i8* %74, { i8*, i64, i64 }* byval %14), !dbg !73
%75 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %15, i32 0, i32 0, !dbg !73
%76 = load { i8*, i64, i64 }, { i8*, i64, i64 }* %75, !dbg !73
%77 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %15, i32 0, i32 1, !dbg !73
%78 = load { i8*, i8* }, { i8*, i8* }* %77, !dbg !73
%79 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %0, i32 0, i32 0, !dbg !74
store { i8*, i64, i64 } %76, { i8*, i64, i64 }* %79, !dbg !74
%80 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %0, i32 0, i32 1, !dbg !74
store { i8*, i8* } %78, { i8*, i8* }* %80, !dbg !74
ret void, !dbg !74
.4.if.else: ; preds = %.2.if.else
store { i8*, i64 } %34, { i8*, i64 }* %16, !dbg !75
%81 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %16, i32 0, i32 0, !dbg !75
%82 = load i8*, i8** %81, !dbg !75
%83 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %16, i32 0, i32 1, !dbg !75
%84 = load i64, i64* %83, !dbg !75
store { i8*, i64 } { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @6, i32 0, i32 0), i64 5 }, { i8*, i64 }* %17, !dbg !75
%85 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %17, i32 0, i32 0, !dbg !75
%86 = load i8*, i8** %85, !dbg !75
%87 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %17, i32 0, i32 1, !dbg !75
%88 = load i64, i64* %87, !dbg !75
%89 = call i64 @__go_strcmp(i8* nest undef, i8* %82, i64 %84, i8* %86, i64 %88), !dbg !75
%90 = icmp eq i64 %89, 0, !dbg !75
%91 = zext i1 %90 to i8, !dbg !75
%92 = trunc i8 %91 to i1, !dbg !69
br i1 %92, label %.5.if.then, label %.6.if.done, !dbg !69
.5.if.then: ; preds = %.4.if.else
store { i8*, i8* } %26, { i8*, i8* }* %18, !dbg !76
%93 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %18, i32 0, i32 0, !dbg !76
%94 = load i8*, i8** %93, !dbg !76
%95 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %18, i32 0, i32 1, !dbg !76
%96 = load i8*, i8** %95, !dbg !76
store { i8*, i64, i64 } %36, { i8*, i64, i64 }* %19, !dbg !76
call void @main.query.pN20_main.SimpleChaincode({ { i8*, i64, i64 }, { i8*, i8* } }* sret %20, i8* nest undef, i8* %2, i8* %94, i8* %96, { i8*, i64, i64 }* byval %19), !dbg !76
%97 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %20, i32 0, i32 0, !dbg !76
%98 = load { i8*, i64, i64 }, { i8*, i64, i64 }* %97, !dbg !76
%99 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %20, i32 0, i32 1, !dbg !76
%100 = load { i8*, i8* }, { i8*, i8* }* %99, !dbg !76
%101 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %0, i32 0, i32 0, !dbg !77
store { i8*, i64, i64 } %98, { i8*, i64, i64 }* %101, !dbg !77
%102 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %0, i32 0, i32 1, !dbg !77
store { i8*, i8* } %100, { i8*, i8* }* %102, !dbg !77
ret void, !dbg !77
.6.if.done: ; preds = %.4.if.else
store { i8*, i64 } { i8* getelementptr inbounds ([65 x i8], [65 x i8]* @7, i32 0, i32 0), i64 65 }, { i8*, i64 }* %21, !dbg !78
%103 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %21, i32 0, i32 0, !dbg !78
%104 = load i8*, i8** %103, !dbg !78
%105 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %21, i32 0, i32 1, !dbg !78
%106 = load i64, i64* %105, !dbg !78
%107 = call { i8*, i8* } @errors.New(i8* nest undef, i8* %104, i64 %106), !dbg !78
%108 = extractvalue { i8*, i8* } %107, 0, !dbg !78
%109 = extractvalue { i8*, i8* } %107, 1, !dbg !78
%110 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %22, i32 0, i32 0, !dbg !78
store i8* %108, i8** %110, !dbg !78
%111 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %22, i32 0, i32 1, !dbg !78
store i8* %109, i8** %111, !dbg !78
%112 = load { i8*, i8* }, { i8*, i8* }* %22, !dbg !78
%113 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %0, i32 0, i32 0, !dbg !79
store { i8*, i64, i64 } zeroinitializer, { i8*, i64, i64 }* %113, !dbg !79
%114 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %0, i32 0, i32 1, !dbg !79
store { i8*, i8* } %112, { i8*, i8* }* %114, !dbg !79
ret void, !dbg !79
}
define void @main.invoke.pN20_main.SimpleChaincode({ { i8*, i64, i64 }, { i8*, i8* } }* sret, i8* nest, i8*, i8*, i8*, { i8*, i64, i64 }* byval) #2 !dbg !80 {
prologue:
%6 = alloca { i8*, i64 }, !dbg !89
%7 = alloca { i8*, i8* }, !dbg !89
%8 = alloca { i8*, i64 }, !dbg !89
%9 = alloca { { i8*, i64, i64 }, { i8*, i8* } }, !dbg !89
%10 = alloca { i8*, i8* }, !dbg !89
%11 = alloca { i8*, i8* }, !dbg !89
%12 = alloca { i8*, i64 }, !dbg !89
%13 = alloca { i8*, i8* }, !dbg !89
%14 = alloca { i8*, i64 }, !dbg !89
%15 = alloca { i8*, i8* }, !dbg !89
%16 = alloca { i8*, i64 }, !dbg !89
%17 = alloca { i8*, i64 }, !dbg !89
%18 = alloca { i64, { i8*, i8* } }, !dbg !89
%19 = alloca { i8*, i64 }, !dbg !89
%20 = alloca { { i8*, i64, i64 }, { i8*, i8* } }, !dbg !89
%21 = alloca { i8*, i8* }, !dbg !89
%22 = alloca { i8*, i8* }, !dbg !89
%23 = alloca { i8*, i64 }, !dbg !89
%24 = alloca { i8*, i8* }, !dbg !89
%25 = alloca { i8*, i64 }, !dbg !89
%26 = alloca { i8*, i8* }, !dbg !89
%27 = alloca { i8*, i64 }, !dbg !89
%28 = alloca { i8*, i64 }, !dbg !89
%29 = alloca { i64, { i8*, i8* } }, !dbg !89
%30 = alloca { i8*, i64 }, !dbg !89
%31 = alloca { i64, { i8*, i8* } }, !dbg !89
%32 = alloca { i8*, i8* }, !dbg !89
%33 = alloca { i8*, i8* }, !dbg !89
%34 = alloca { i8*, i64 }, !dbg !89
%35 = alloca { i8*, i8* }, !dbg !89
%36 = alloca { i8*, i64 }, !dbg !89
%37 = alloca { i8*, i64, i64 }, !dbg !89
%38 = alloca { i64, { i8*, i8* } }, !dbg !89
%39 = alloca { i8*, i64 }, !dbg !89
%40 = alloca { i8*, i64 }, !dbg !89
%41 = alloca { i8*, i64, i64 }, !dbg !89
%42 = alloca { i8*, i64 }, !dbg !89
%43 = alloca { i8*, i64, i64 }, !dbg !89
%44 = alloca { i8*, i8* }, !dbg !89
%45 = alloca { i8*, i8* }, !dbg !89
%46 = alloca { i8*, i8* }, !dbg !89
%47 = alloca { i8*, i64 }, !dbg !89
%48 = alloca { i8*, i64 }, !dbg !89
%49 = alloca { i8*, i64, i64 }, !dbg !89
%50 = alloca { i8*, i64 }, !dbg !89
%51 = alloca { i8*, i64, i64 }, !dbg !89
%52 = alloca { i8*, i8* }, !dbg !89
%53 = alloca { i8*, i8* }, !dbg !89
%54 = alloca { i8*, i8* }, !dbg !89
%55 = alloca { i8*, i8* }, !dbg !89
%56 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %55, i32 0, i32 0, !dbg !89
store i8* %3, i8** %56, !dbg !89
%57 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %55, i32 0, i32 1, !dbg !89
store i8* %4, i8** %57, !dbg !89
%58 = load { i8*, i8* }, { i8*, i8* }* %55, !dbg !89
%59 = load { i8*, i64, i64 }, { i8*, i64, i64 }* %5, !dbg !89
br label %.0.entry, !dbg !89
.0.entry: ; preds = %prologue
%60 = extractvalue { i8*, i64, i64 } %59, 1, !dbg !90
%61 = icmp eq i64 %60, 3, !dbg !91
%62 = zext i1 %61 to i8, !dbg !91
%63 = xor i8 %62, 1, !dbg !91
%64 = trunc i8 %63 to i1, !dbg !92
br i1 %64, label %.1.if.then, label %.2.if.done, !dbg !92
.1.if.then: ; preds = %.0.entry
store { i8*, i64 } { i8* getelementptr inbounds ([42 x i8], [42 x i8]* @10, i32 0, i32 0), i64 42 }, { i8*, i64 }* %6, !dbg !93
%65 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %6, i32 0, i32 0, !dbg !93
%66 = load i8*, i8** %65, !dbg !93
%67 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %6, i32 0, i32 1, !dbg !93
%68 = load i64, i64* %67, !dbg !93
%69 = call { i8*, i8* } @errors.New(i8* nest undef, i8* %66, i64 %68), !dbg !93
%70 = extractvalue { i8*, i8* } %69, 0, !dbg !93
%71 = extractvalue { i8*, i8* } %69, 1, !dbg !93
%72 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %7, i32 0, i32 0, !dbg !93
store i8* %70, i8** %72, !dbg !93
%73 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %7, i32 0, i32 1, !dbg !93
store i8* %71, i8** %73, !dbg !93
%74 = load { i8*, i8* }, { i8*, i8* }* %7, !dbg !93
%75 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %0, i32 0, i32 0, !dbg !94
store { i8*, i64, i64 } zeroinitializer, { i8*, i64, i64 }* %75, !dbg !94
%76 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %0, i32 0, i32 1, !dbg !94
store { i8*, i8* } %74, { i8*, i8* }* %76, !dbg !94
ret void, !dbg !94
.2.if.done: ; preds = %.0.entry
%77 = extractvalue { i8*, i64, i64 } %59, 0, !dbg !95
%78 = extractvalue { i8*, i64, i64 } %59, 1, !dbg !95
%79 = icmp sle i64 %78, 0, !dbg !95
%80 = or i1 false, %79, !dbg !95
br i1 %80, label %330, label %331, !dbg !95, !prof !38
.3.if.then: ; preds = %341
store { i8*, i64 } { i8* getelementptr inbounds ([19 x i8], [19 x i8]* @11, i32 0, i32 0), i64 19 }, { i8*, i64 }* %12, !dbg !96
%81 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %12, i32 0, i32 0, !dbg !96
%82 = load i8*, i8** %81, !dbg !96
%83 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %12, i32 0, i32 1, !dbg !96
%84 = load i64, i64* %83, !dbg !96
%85 = call { i8*, i8* } @errors.New(i8* nest undef, i8* %82, i64 %84), !dbg !96
%86 = extractvalue { i8*, i8* } %85, 0, !dbg !96
%87 = extractvalue { i8*, i8* } %85, 1, !dbg !96
%88 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %13, i32 0, i32 0, !dbg !96
store i8* %86, i8** %88, !dbg !96
%89 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %13, i32 0, i32 1, !dbg !96
store i8* %87, i8** %89, !dbg !96
%90 = load { i8*, i8* }, { i8*, i8* }* %13, !dbg !96
%91 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %0, i32 0, i32 0, !dbg !97
store { i8*, i64, i64 } zeroinitializer, { i8*, i64, i64 }* %91, !dbg !97
%92 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %0, i32 0, i32 1, !dbg !97
store { i8*, i8* } %90, { i8*, i8* }* %92, !dbg !97
ret void, !dbg !97
.4.if.done: ; preds = %341
%93 = extractvalue { i8*, i64, i64 } %358, 0, !dbg !98
%94 = icmp eq i8* %93, null, !dbg !98
%95 = zext i1 %94 to i8, !dbg !98
%96 = trunc i8 %95 to i1, !dbg !92
br i1 %96, label %.5.if.then, label %.6.if.done, !dbg !92
.5.if.then: ; preds = %.4.if.done
store { i8*, i64 } { i8* getelementptr inbounds ([16 x i8], [16 x i8]* @12, i32 0, i32 0), i64 16 }, { i8*, i64 }* %14, !dbg !99
%97 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %14, i32 0, i32 0, !dbg !99
%98 = load i8*, i8** %97, !dbg !99
%99 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %14, i32 0, i32 1, !dbg !99
%100 = load i64, i64* %99, !dbg !99
%101 = call { i8*, i8* } @errors.New(i8* nest undef, i8* %98, i64 %100), !dbg !99
%102 = extractvalue { i8*, i8* } %101, 0, !dbg !99
%103 = extractvalue { i8*, i8* } %101, 1, !dbg !99
%104 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %15, i32 0, i32 0, !dbg !99
store i8* %102, i8** %104, !dbg !99
%105 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %15, i32 0, i32 1, !dbg !99
store i8* %103, i8** %105, !dbg !99
%106 = load { i8*, i8* }, { i8*, i8* }* %15, !dbg !99
%107 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %0, i32 0, i32 0, !dbg !100
store { i8*, i64, i64 } zeroinitializer, { i8*, i64, i64 }* %107, !dbg !100
%108 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %0, i32 0, i32 1, !dbg !100
store { i8*, i8* } %106, { i8*, i8* }* %108, !dbg !100
ret void, !dbg !100
.6.if.done: ; preds = %.4.if.done
%109 = extractvalue { i8*, i64, i64 } %358, 0, !dbg !101
%110 = extractvalue { i8*, i64, i64 } %358, 1, !dbg !101
%111 = call { i8*, i64 } @__go_byte_array_to_string(i8* nest undef, i8* %109, i64 %110), !dbg !101
%112 = extractvalue { i8*, i64 } %111, 0, !dbg !101
%113 = extractvalue { i8*, i64 } %111, 1, !dbg !101
%114 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %16, i32 0, i32 0, !dbg !101
store i8* %112, i8** %114, !dbg !101
%115 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %16, i32 0, i32 1, !dbg !101
store i64 %113, i64* %115, !dbg !101
%116 = load { i8*, i64 }, { i8*, i64 }* %16, !dbg !101
store { i8*, i64 } %116, { i8*, i64 }* %17, !dbg !102
%117 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %17, i32 0, i32 0, !dbg !102
%118 = load i8*, i8** %117, !dbg !102
%119 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %17, i32 0, i32 1, !dbg !102
%120 = load i64, i64* %119, !dbg !102
call void @strconv.Atoi({ i64, { i8*, i8* } }* sret %18, i8* nest undef, i8* %118, i64 %120), !dbg !102
%121 = getelementptr inbounds { i64, { i8*, i8* } }, { i64, { i8*, i8* } }* %18, i32 0, i32 0, !dbg !102
%122 = load i64, i64* %121, !dbg !102
%123 = getelementptr inbounds { i64, { i8*, i8* } }, { i64, { i8*, i8* } }* %18, i32 0, i32 1, !dbg !102
%124 = load { i8*, i8* }, { i8*, i8* }* %123, !dbg !102
%125 = extractvalue { i8*, i8* } %58, 0, !dbg !103
%126 = extractvalue { i8*, i8* } %58, 1, !dbg !103
%127 = bitcast i8* %125 to i8**, !dbg !103
%128 = getelementptr i8*, i8** %127, i32 13, !dbg !103
%129 = load i8*, i8** %128, !dbg !103
store { i8*, i64 } %346, { i8*, i64 }* %19, !dbg !103
%130 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %19, i32 0, i32 0, !dbg !103
%131 = load i8*, i8** %130, !dbg !103
%132 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %19, i32 0, i32 1, !dbg !103
%133 = load i64, i64* %132, !dbg !103
%134 = bitcast i8* %129 to void ({ { i8*, i64, i64 }, { i8*, i8* } }*, i8*, i8*, i8*, i64)*, !dbg !103
call void %134({ { i8*, i64, i64 }, { i8*, i8* } }* sret %20, i8* nest undef, i8* %126, i8* %131, i64 %133), !dbg !103
%135 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %20, i32 0, i32 0, !dbg !103
%136 = load { i8*, i64, i64 }, { i8*, i64, i64 }* %135, !dbg !103
%137 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %20, i32 0, i32 1, !dbg !103
%138 = load { i8*, i8* }, { i8*, i8* }* %137, !dbg !103
store { i8*, i8* } %138, { i8*, i8* }* %21, !dbg !104
%139 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %21, i32 0, i32 0, !dbg !104
%140 = load i8*, i8** %139, !dbg !104
%141 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %21, i32 0, i32 1, !dbg !104
%142 = load i8*, i8** %141, !dbg !104
store { i8*, i8* } zeroinitializer, { i8*, i8* }* %22, !dbg !104
%143 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %22, i32 0, i32 0, !dbg !104
%144 = load i8*, i8** %143, !dbg !104
%145 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %22, i32 0, i32 1, !dbg !104
%146 = load i8*, i8** %145, !dbg !104
%147 = call i64 @__go_interface_compare(i8* nest undef, i8* %140, i8* %142, i8* %144, i8* %146), !dbg !104
%148 = icmp eq i64 %147, 0, !dbg !104
%149 = zext i1 %148 to i8, !dbg !104
%150 = xor i8 %149, 1, !dbg !104
%151 = trunc i8 %150 to i1, !dbg !92
br i1 %151, label %.7.if.then, label %.8.if.done, !dbg !92
.7.if.then: ; preds = %.6.if.done
store { i8*, i64 } { i8* getelementptr inbounds ([19 x i8], [19 x i8]* @13, i32 0, i32 0), i64 19 }, { i8*, i64 }* %23, !dbg !105
%152 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %23, i32 0, i32 0, !dbg !105
%153 = load i8*, i8** %152, !dbg !105
%154 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %23, i32 0, i32 1, !dbg !105
%155 = load i64, i64* %154, !dbg !105
%156 = call { i8*, i8* } @errors.New(i8* nest undef, i8* %153, i64 %155), !dbg !105
%157 = extractvalue { i8*, i8* } %156, 0, !dbg !105
%158 = extractvalue { i8*, i8* } %156, 1, !dbg !105
%159 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %24, i32 0, i32 0, !dbg !105
store i8* %157, i8** %159, !dbg !105
%160 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %24, i32 0, i32 1, !dbg !105
store i8* %158, i8** %160, !dbg !105
%161 = load { i8*, i8* }, { i8*, i8* }* %24, !dbg !105
%162 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %0, i32 0, i32 0, !dbg !106
store { i8*, i64, i64 } zeroinitializer, { i8*, i64, i64 }* %162, !dbg !106
%163 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %0, i32 0, i32 1, !dbg !106
store { i8*, i8* } %161, { i8*, i8* }* %163, !dbg !106
ret void, !dbg !106
.8.if.done: ; preds = %.6.if.done
%164 = extractvalue { i8*, i64, i64 } %136, 0, !dbg !107
%165 = icmp eq i8* %164, null, !dbg !107
%166 = zext i1 %165 to i8, !dbg !107
%167 = trunc i8 %166 to i1, !dbg !92
br i1 %167, label %.9.if.then, label %.10.if.done, !dbg !92
.9.if.then: ; preds = %.8.if.done
store { i8*, i64 } { i8* getelementptr inbounds ([16 x i8], [16 x i8]* @14, i32 0, i32 0), i64 16 }, { i8*, i64 }* %25, !dbg !108
%168 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %25, i32 0, i32 0, !dbg !108
%169 = load i8*, i8** %168, !dbg !108
%170 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %25, i32 0, i32 1, !dbg !108
%171 = load i64, i64* %170, !dbg !108
%172 = call { i8*, i8* } @errors.New(i8* nest undef, i8* %169, i64 %171), !dbg !108
%173 = extractvalue { i8*, i8* } %172, 0, !dbg !108
%174 = extractvalue { i8*, i8* } %172, 1, !dbg !108
%175 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %26, i32 0, i32 0, !dbg !108
store i8* %173, i8** %175, !dbg !108
%176 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %26, i32 0, i32 1, !dbg !108
store i8* %174, i8** %176, !dbg !108
%177 = load { i8*, i8* }, { i8*, i8* }* %26, !dbg !108
%178 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %0, i32 0, i32 0, !dbg !109
store { i8*, i64, i64 } zeroinitializer, { i8*, i64, i64 }* %178, !dbg !109
%179 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %0, i32 0, i32 1, !dbg !109
store { i8*, i8* } %177, { i8*, i8* }* %179, !dbg !109
ret void, !dbg !109
.10.if.done: ; preds = %.8.if.done
%180 = extractvalue { i8*, i64, i64 } %136, 0, !dbg !110
%181 = extractvalue { i8*, i64, i64 } %136, 1, !dbg !110
%182 = call { i8*, i64 } @__go_byte_array_to_string(i8* nest undef, i8* %180, i64 %181), !dbg !110
%183 = extractvalue { i8*, i64 } %182, 0, !dbg !110
%184 = extractvalue { i8*, i64 } %182, 1, !dbg !110
%185 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %27, i32 0, i32 0, !dbg !110
store i8* %183, i8** %185, !dbg !110
%186 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %27, i32 0, i32 1, !dbg !110
store i64 %184, i64* %186, !dbg !110
%187 = load { i8*, i64 }, { i8*, i64 }* %27, !dbg !110
store { i8*, i64 } %187, { i8*, i64 }* %28, !dbg !111
%188 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %28, i32 0, i32 0, !dbg !111
%189 = load i8*, i8** %188, !dbg !111
%190 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %28, i32 0, i32 1, !dbg !111
%191 = load i64, i64* %190, !dbg !111
call void @strconv.Atoi({ i64, { i8*, i8* } }* sret %29, i8* nest undef, i8* %189, i64 %191), !dbg !111
%192 = getelementptr inbounds { i64, { i8*, i8* } }, { i64, { i8*, i8* } }* %29, i32 0, i32 0, !dbg !111
%193 = load i64, i64* %192, !dbg !111
%194 = getelementptr inbounds { i64, { i8*, i8* } }, { i64, { i8*, i8* } }* %29, i32 0, i32 1, !dbg !111
%195 = load { i8*, i8* }, { i8*, i8* }* %194, !dbg !111
%196 = extractvalue { i8*, i64, i64 } %59, 0, !dbg !112
%197 = extractvalue { i8*, i64, i64 } %59, 1, !dbg !112
%198 = icmp sle i64 %197, 2, !dbg !112
%199 = or i1 false, %198, !dbg !112
br i1 %199, label %330, label %374, !dbg !112, !prof !38
.11.if.then: ; preds = %374
store { i8*, i64 } { i8* getelementptr inbounds ([53 x i8], [53 x i8]* @15, i32 0, i32 0), i64 53 }, { i8*, i64 }* %34, !dbg !113
%200 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %34, i32 0, i32 0, !dbg !113
%201 = load i8*, i8** %200, !dbg !113
%202 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %34, i32 0, i32 1, !dbg !113
%203 = load i64, i64* %202, !dbg !113
%204 = call { i8*, i8* } @errors.New(i8* nest undef, i8* %201, i64 %203), !dbg !113
%205 = extractvalue { i8*, i8* } %204, 0, !dbg !113
%206 = extractvalue { i8*, i8* } %204, 1, !dbg !113
%207 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %35, i32 0, i32 0, !dbg !113
store i8* %205, i8** %207, !dbg !113
%208 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %35, i32 0, i32 1, !dbg !113
store i8* %206, i8** %208, !dbg !113
%209 = load { i8*, i8* }, { i8*, i8* }* %35, !dbg !113
%210 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %0, i32 0, i32 0, !dbg !114
store { i8*, i64, i64 } zeroinitializer, { i8*, i64, i64 }* %210, !dbg !114
%211 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %0, i32 0, i32 1, !dbg !114
store { i8*, i8* } %209, { i8*, i8* }* %211, !dbg !114
ret void, !dbg !114
.12.if.done: ; preds = %374
%212 = sub i64 %122, %385, !dbg !115
%213 = add i64 %193, %385, !dbg !116
%214 = call i8* @__go_new(i8* nest undef, i8* getelementptr inbounds (%arrayType, %arrayType* @__go_td_AIe2e, i32 0, i32 0, i32 0), i64 32), !dbg !117
%varargs = bitcast i8* %214 to [2 x { i8*, i8* }]*, !dbg !117
%215 = bitcast [2 x { i8*, i8* }]* %varargs to i8*, !dbg !117
%216 = bitcast i8* %215 to { i8*, i8* }*, !dbg !92
%217 = getelementptr { i8*, i8* }, { i8*, i8* }* %216, i64 0, !dbg !92
%218 = bitcast { i8*, i8* }* %217 to i8*, !dbg !92
%219 = call i8* @__go_new(i8* nest undef, i8* getelementptr inbounds (%commonType, %commonType* @__go_tdn_int, i32 0, i32 0), i64 8), !dbg !92
%220 = bitcast i8* %219 to i64*, !dbg !92
store i64 %212, i64* %220, !dbg !92
%221 = bitcast i64* %220 to i8*, !dbg !92
%222 = insertvalue { i8*, i8* } { i8* getelementptr inbounds (%commonType, %commonType* @__go_tdn_int, i32 0, i32 0), i8* undef }, i8* %221, 1, !dbg !92
%223 = bitcast i8* %218 to { i8*, i8* }*, !dbg !118
store { i8*, i8* } %222, { i8*, i8* }* %223, !dbg !118
%224 = bitcast i8* %215 to { i8*, i8* }*, !dbg !92
%225 = getelementptr { i8*, i8* }, { i8*, i8* }* %224, i64 1, !dbg !92
%226 = bitcast { i8*, i8* }* %225 to i8*, !dbg !92
%227 = call i8* @__go_new(i8* nest undef, i8* getelementptr inbounds (%commonType, %commonType* @__go_tdn_int, i32 0, i32 0), i64 8), !dbg !92
%228 = bitcast i8* %227 to i64*, !dbg !92
store i64 %213, i64* %228, !dbg !92
%229 = bitcast i64* %228 to i8*, !dbg !92
%230 = insertvalue { i8*, i8* } { i8* getelementptr inbounds (%commonType, %commonType* @__go_tdn_int, i32 0, i32 0), i8* undef }, i8* %229, 1, !dbg !92
%231 = bitcast i8* %226 to { i8*, i8* }*, !dbg !119
store { i8*, i8* } %230, { i8*, i8* }* %231, !dbg !119
%232 = getelementptr inbounds i8, i8* %215, i64 0, !dbg !92
%233 = insertvalue { i8*, i64, i64 } undef, i8* %232, 0, !dbg !92
%234 = insertvalue { i8*, i64, i64 } %233, i64 2, 1, !dbg !92
%235 = insertvalue { i8*, i64, i64 } %234, i64 2, 2, !dbg !92
store { i8*, i64 } { i8* getelementptr inbounds ([21 x i8], [21 x i8]* @16, i32 0, i32 0), i64 21 }, { i8*, i64 }* %36, !dbg !120
%236 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %36, i32 0, i32 0, !dbg !120
%237 = load i8*, i8** %236, !dbg !120
%238 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %36, i32 0, i32 1, !dbg !120
%239 = load i64, i64* %238, !dbg !120
store { i8*, i64, i64 } %235, { i8*, i64, i64 }* %37, !dbg !120
call void @fmt.Printf({ i64, { i8*, i8* } }* sret %38, i8* nest undef, i8* %237, i64 %239, { i8*, i64, i64 }* byval %37), !dbg !120
%240 = getelementptr inbounds { i64, { i8*, i8* } }, { i64, { i8*, i8* } }* %38, i32 0, i32 0, !dbg !120
%241 = load i64, i64* %240, !dbg !120
%242 = getelementptr inbounds { i64, { i8*, i8* } }, { i64, { i8*, i8* } }* %38, i32 0, i32 1, !dbg !120
%243 = load { i8*, i8* }, { i8*, i8* }* %242, !dbg !120
%244 = call { i8*, i64 } @strconv.Itoa(i8* nest undef, i64 %212), !dbg !121
%245 = extractvalue { i8*, i64 } %244, 0, !dbg !121
%246 = extractvalue { i8*, i64 } %244, 1, !dbg !121
%247 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %39, i32 0, i32 0, !dbg !121
store i8* %245, i8** %247, !dbg !121
%248 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %39, i32 0, i32 1, !dbg !121
store i64 %246, i64* %248, !dbg !121
%249 = load { i8*, i64 }, { i8*, i64 }* %39, !dbg !121
store { i8*, i64 } %249, { i8*, i64 }* %40, !dbg !122
%250 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %40, i32 0, i32 0, !dbg !122
%251 = load i8*, i8** %250, !dbg !122
%252 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %40, i32 0, i32 1, !dbg !122
%253 = load i64, i64* %252, !dbg !122
call void @__go_string_to_byte_array({ i8*, i64, i64 }* sret %41, i8* nest undef, i8* %251, i64 %253), !dbg !122
%254 = load { i8*, i64, i64 }, { i8*, i64, i64 }* %41, !dbg !122
%255 = extractvalue { i8*, i8* } %58, 0, !dbg !123
%256 = extractvalue { i8*, i8* } %58, 1, !dbg !123
%257 = bitcast i8* %255 to i8**, !dbg !123
%258 = getelementptr i8*, i8** %257, i32 20, !dbg !123
%259 = load i8*, i8** %258, !dbg !123
store { i8*, i64 } %336, { i8*, i64 }* %42, !dbg !123
%260 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %42, i32 0, i32 0, !dbg !123
%261 = load i8*, i8** %260, !dbg !123
%262 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %42, i32 0, i32 1, !dbg !123
%263 = load i64, i64* %262, !dbg !123
store { i8*, i64, i64 } %254, { i8*, i64, i64 }* %43, !dbg !123
%264 = bitcast i8* %259 to { i8*, i8* } (i8*, i8*, i8*, i64, { i8*, i64, i64 }*)*, !dbg !123
%265 = call { i8*, i8* } %264(i8* nest undef, i8* %256, i8* %261, i64 %263, { i8*, i64, i64 }* byval %43), !dbg !123
%266 = extractvalue { i8*, i8* } %265, 0, !dbg !123
%267 = extractvalue { i8*, i8* } %265, 1, !dbg !123
%268 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %44, i32 0, i32 0, !dbg !123
store i8* %266, i8** %268, !dbg !123
%269 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %44, i32 0, i32 1, !dbg !123
store i8* %267, i8** %269, !dbg !123
%270 = load { i8*, i8* }, { i8*, i8* }* %44, !dbg !123
store { i8*, i8* } %270, { i8*, i8* }* %45, !dbg !124
%271 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %45, i32 0, i32 0, !dbg !124
%272 = load i8*, i8** %271, !dbg !124
%273 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %45, i32 0, i32 1, !dbg !124
%274 = load i8*, i8** %273, !dbg !124
store { i8*, i8* } zeroinitializer, { i8*, i8* }* %46, !dbg !124
%275 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %46, i32 0, i32 0, !dbg !124
%276 = load i8*, i8** %275, !dbg !124
%277 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %46, i32 0, i32 1, !dbg !124
%278 = load i8*, i8** %277, !dbg !124
%279 = call i64 @__go_interface_compare(i8* nest undef, i8* %272, i8* %274, i8* %276, i8* %278), !dbg !124
%280 = icmp eq i64 %279, 0, !dbg !124
%281 = zext i1 %280 to i8, !dbg !124
%282 = xor i8 %281, 1, !dbg !124
%283 = trunc i8 %282 to i1, !dbg !92
br i1 %283, label %.13.if.then, label %.14.if.done, !dbg !92
.13.if.then: ; preds = %.12.if.done
%284 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %0, i32 0, i32 0, !dbg !125
store { i8*, i64, i64 } zeroinitializer, { i8*, i64, i64 }* %284, !dbg !125
%285 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %0, i32 0, i32 1, !dbg !125
store { i8*, i8* } %270, { i8*, i8* }* %285, !dbg !125
ret void, !dbg !125
.14.if.done: ; preds = %.12.if.done
%286 = call { i8*, i64 } @strconv.Itoa(i8* nest undef, i64 %213), !dbg !126
%287 = extractvalue { i8*, i64 } %286, 0, !dbg !126
%288 = extractvalue { i8*, i64 } %286, 1, !dbg !126
%289 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %47, i32 0, i32 0, !dbg !126
store i8* %287, i8** %289, !dbg !126
%290 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %47, i32 0, i32 1, !dbg !126
store i64 %288, i64* %290, !dbg !126
%291 = load { i8*, i64 }, { i8*, i64 }* %47, !dbg !126
store { i8*, i64 } %291, { i8*, i64 }* %48, !dbg !127
%292 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %48, i32 0, i32 0, !dbg !127
%293 = load i8*, i8** %292, !dbg !127
%294 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %48, i32 0, i32 1, !dbg !127
%295 = load i64, i64* %294, !dbg !127
call void @__go_string_to_byte_array({ i8*, i64, i64 }* sret %49, i8* nest undef, i8* %293, i64 %295), !dbg !127
%296 = load { i8*, i64, i64 }, { i8*, i64, i64 }* %49, !dbg !127
%297 = extractvalue { i8*, i8* } %58, 0, !dbg !128
%298 = extractvalue { i8*, i8* } %58, 1, !dbg !128
%299 = bitcast i8* %297 to i8**, !dbg !128
%300 = getelementptr i8*, i8** %299, i32 20, !dbg !128
%301 = load i8*, i8** %300, !dbg !128
store { i8*, i64 } %346, { i8*, i64 }* %50, !dbg !128
%302 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %50, i32 0, i32 0, !dbg !128
%303 = load i8*, i8** %302, !dbg !128
%304 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %50, i32 0, i32 1, !dbg !128
%305 = load i64, i64* %304, !dbg !128
store { i8*, i64, i64 } %296, { i8*, i64, i64 }* %51, !dbg !128
%306 = bitcast i8* %301 to { i8*, i8* } (i8*, i8*, i8*, i64, { i8*, i64, i64 }*)*, !dbg !128
%307 = call { i8*, i8* } %306(i8* nest undef, i8* %298, i8* %303, i64 %305, { i8*, i64, i64 }* byval %51), !dbg !128
%308 = extractvalue { i8*, i8* } %307, 0, !dbg !128
%309 = extractvalue { i8*, i8* } %307, 1, !dbg !128
%310 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %52, i32 0, i32 0, !dbg !128
store i8* %308, i8** %310, !dbg !128
%311 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %52, i32 0, i32 1, !dbg !128
store i8* %309, i8** %311, !dbg !128
%312 = load { i8*, i8* }, { i8*, i8* }* %52, !dbg !128
store { i8*, i8* } %312, { i8*, i8* }* %53, !dbg !129
%313 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %53, i32 0, i32 0, !dbg !129
%314 = load i8*, i8** %313, !dbg !129
%315 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %53, i32 0, i32 1, !dbg !129
%316 = load i8*, i8** %315, !dbg !129
store { i8*, i8* } zeroinitializer, { i8*, i8* }* %54, !dbg !129
%317 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %54, i32 0, i32 0, !dbg !129
%318 = load i8*, i8** %317, !dbg !129
%319 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %54, i32 0, i32 1, !dbg !129
%320 = load i8*, i8** %319, !dbg !129
%321 = call i64 @__go_interface_compare(i8* nest undef, i8* %314, i8* %316, i8* %318, i8* %320), !dbg !129
%322 = icmp eq i64 %321, 0, !dbg !129
%323 = zext i1 %322 to i8, !dbg !129
%324 = xor i8 %323, 1, !dbg !129
%325 = trunc i8 %324 to i1, !dbg !92
br i1 %325, label %.15.if.then, label %.16.if.done, !dbg !92
.15.if.then: ; preds = %.14.if.done
%326 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %0, i32 0, i32 0, !dbg !130
store { i8*, i64, i64 } zeroinitializer, { i8*, i64, i64 }* %326, !dbg !130
%327 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %0, i32 0, i32 1, !dbg !130
store { i8*, i8* } %312, { i8*, i8* }* %327, !dbg !130
ret void, !dbg !130
.16.if.done: ; preds = %.14.if.done
%328 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %0, i32 0, i32 0, !dbg !131
store { i8*, i64, i64 } zeroinitializer, { i8*, i64, i64 }* %328, !dbg !131
%329 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %0, i32 0, i32 1, !dbg !131
store { i8*, i8* } zeroinitializer, { i8*, i8* }* %329, !dbg !131
ret void, !dbg !131
; <label>:330: ; preds = %.10.if.done, %331, %.2.if.done
call void @__go_runtime_error(i8* nest undef, i32 0), !dbg !95
unreachable, !dbg !95
; <label>:331: ; preds = %.2.if.done
%332 = bitcast i8* %77 to { i8*, i64 }*, !dbg !95
%333 = getelementptr { i8*, i64 }, { i8*, i64 }* %332, i64 0, !dbg !95
%334 = bitcast { i8*, i64 }* %333 to i8*, !dbg !95
%335 = bitcast i8* %334 to { i8*, i64 }*, !dbg !95
%336 = load { i8*, i64 }, { i8*, i64 }* %335, !dbg !95
%337 = extractvalue { i8*, i64, i64 } %59, 0, !dbg !132
%338 = extractvalue { i8*, i64, i64 } %59, 1, !dbg !132
%339 = icmp sle i64 %338, 1, !dbg !132
%340 = or i1 false, %339, !dbg !132
br i1 %340, label %330, label %341, !dbg !132, !prof !38
; <label>:341: ; preds = %331
%342 = bitcast i8* %337 to { i8*, i64 }*, !dbg !132
%343 = getelementptr { i8*, i64 }, { i8*, i64 }* %342, i64 1, !dbg !132
%344 = bitcast { i8*, i64 }* %343 to i8*, !dbg !132
%345 = bitcast i8* %344 to { i8*, i64 }*, !dbg !132
%346 = load { i8*, i64 }, { i8*, i64 }* %345, !dbg !132
%347 = extractvalue { i8*, i8* } %58, 0, !dbg !133
%348 = extractvalue { i8*, i8* } %58, 1, !dbg !133
%349 = bitcast i8* %347 to i8**, !dbg !133
%350 = getelementptr i8*, i8** %349, i32 13, !dbg !133
%351 = load i8*, i8** %350, !dbg !133
store { i8*, i64 } %336, { i8*, i64 }* %8, !dbg !133
%352 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %8, i32 0, i32 0, !dbg !133
%353 = load i8*, i8** %352, !dbg !133
%354 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %8, i32 0, i32 1, !dbg !133
%355 = load i64, i64* %354, !dbg !133
%356 = bitcast i8* %351 to void ({ { i8*, i64, i64 }, { i8*, i8* } }*, i8*, i8*, i8*, i64)*, !dbg !133
call void %356({ { i8*, i64, i64 }, { i8*, i8* } }* sret %9, i8* nest undef, i8* %348, i8* %353, i64 %355), !dbg !133
%357 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %9, i32 0, i32 0, !dbg !133
%358 = load { i8*, i64, i64 }, { i8*, i64, i64 }* %357, !dbg !133
%359 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %9, i32 0, i32 1, !dbg !133
%360 = load { i8*, i8* }, { i8*, i8* }* %359, !dbg !133
store { i8*, i8* } %360, { i8*, i8* }* %10, !dbg !134
%361 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %10, i32 0, i32 0, !dbg !134
%362 = load i8*, i8** %361, !dbg !134
%363 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %10, i32 0, i32 1, !dbg !134
%364 = load i8*, i8** %363, !dbg !134
store { i8*, i8* } zeroinitializer, { i8*, i8* }* %11, !dbg !134
%365 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %11, i32 0, i32 0, !dbg !134
%366 = load i8*, i8** %365, !dbg !134
%367 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %11, i32 0, i32 1, !dbg !134
%368 = load i8*, i8** %367, !dbg !134
%369 = call i64 @__go_interface_compare(i8* nest undef, i8* %362, i8* %364, i8* %366, i8* %368), !dbg !134
%370 = icmp eq i64 %369, 0, !dbg !134
%371 = zext i1 %370 to i8, !dbg !134
%372 = xor i8 %371, 1, !dbg !134
%373 = trunc i8 %372 to i1, !dbg !92
br i1 %373, label %.3.if.then, label %.4.if.done, !dbg !92
; <label>:374: ; preds = %.10.if.done
%375 = bitcast i8* %196 to { i8*, i64 }*, !dbg !112
%376 = getelementptr { i8*, i64 }, { i8*, i64 }* %375, i64 2, !dbg !112
%377 = bitcast { i8*, i64 }* %376 to i8*, !dbg !112
%378 = bitcast i8* %377 to { i8*, i64 }*, !dbg !112
%379 = load { i8*, i64 }, { i8*, i64 }* %378, !dbg !112
store { i8*, i64 } %379, { i8*, i64 }* %30, !dbg !135
%380 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %30, i32 0, i32 0, !dbg !135
%381 = load i8*, i8** %380, !dbg !135
%382 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %30, i32 0, i32 1, !dbg !135
%383 = load i64, i64* %382, !dbg !135
call void @strconv.Atoi({ i64, { i8*, i8* } }* sret %31, i8* nest undef, i8* %381, i64 %383), !dbg !135
%384 = getelementptr inbounds { i64, { i8*, i8* } }, { i64, { i8*, i8* } }* %31, i32 0, i32 0, !dbg !135
%385 = load i64, i64* %384, !dbg !135
%386 = getelementptr inbounds { i64, { i8*, i8* } }, { i64, { i8*, i8* } }* %31, i32 0, i32 1, !dbg !135
%387 = load { i8*, i8* }, { i8*, i8* }* %386, !dbg !135
store { i8*, i8* } %387, { i8*, i8* }* %32, !dbg !136
%388 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %32, i32 0, i32 0, !dbg !136
%389 = load i8*, i8** %388, !dbg !136
%390 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %32, i32 0, i32 1, !dbg !136
%391 = load i8*, i8** %390, !dbg !136
store { i8*, i8* } zeroinitializer, { i8*, i8* }* %33, !dbg !136
%392 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %33, i32 0, i32 0, !dbg !136
%393 = load i8*, i8** %392, !dbg !136
%394 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %33, i32 0, i32 1, !dbg !136
%395 = load i8*, i8** %394, !dbg !136
%396 = call i64 @__go_interface_compare(i8* nest undef, i8* %389, i8* %391, i8* %393, i8* %395), !dbg !136
%397 = icmp eq i64 %396, 0, !dbg !136
%398 = zext i1 %397 to i8, !dbg !136
%399 = xor i8 %398, 1, !dbg !136
%400 = trunc i8 %399 to i1, !dbg !92
br i1 %400, label %.11.if.then, label %.12.if.done, !dbg !92
}
define void @main.delete.pN20_main.SimpleChaincode({ { i8*, i64, i64 }, { i8*, i8* } }* sret, i8* nest, i8*, i8*, i8*, { i8*, i64, i64 }* byval) #2 !dbg !137 {
prologue:
%6 = alloca { i8*, i64 }, !dbg !138
%7 = alloca { i8*, i8* }, !dbg !138
%8 = alloca { i8*, i64 }, !dbg !138
%9 = alloca { i8*, i8* }, !dbg !138
%10 = alloca { i8*, i8* }, !dbg !138
%11 = alloca { i8*, i8* }, !dbg !138
%12 = alloca { i8*, i64 }, !dbg !138
%13 = alloca { i8*, i8* }, !dbg !138
%14 = alloca { i8*, i8* }, !dbg !138
%15 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %14, i32 0, i32 0, !dbg !138
store i8* %3, i8** %15, !dbg !138
%16 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %14, i32 0, i32 1, !dbg !138
store i8* %4, i8** %16, !dbg !138
%17 = load { i8*, i8* }, { i8*, i8* }* %14, !dbg !138
%18 = load { i8*, i64, i64 }, { i8*, i64, i64 }* %5, !dbg !138
br label %.0.entry, !dbg !138
.0.entry: ; preds = %prologue
%19 = extractvalue { i8*, i64, i64 } %18, 1, !dbg !139
%20 = icmp eq i64 %19, 1, !dbg !140
%21 = zext i1 %20 to i8, !dbg !140
%22 = xor i8 %21, 1, !dbg !140
%23 = trunc i8 %22 to i1, !dbg !141
br i1 %23, label %.1.if.then, label %.2.if.done, !dbg !141
.1.if.then: ; preds = %.0.entry
store { i8*, i64 } { i8* getelementptr inbounds ([42 x i8], [42 x i8]* @8, i32 0, i32 0), i64 42 }, { i8*, i64 }* %6, !dbg !142
%24 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %6, i32 0, i32 0, !dbg !142
%25 = load i8*, i8** %24, !dbg !142
%26 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %6, i32 0, i32 1, !dbg !142
%27 = load i64, i64* %26, !dbg !142
%28 = call { i8*, i8* } @errors.New(i8* nest undef, i8* %25, i64 %27), !dbg !142
%29 = extractvalue { i8*, i8* } %28, 0, !dbg !142
%30 = extractvalue { i8*, i8* } %28, 1, !dbg !142
%31 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %7, i32 0, i32 0, !dbg !142
store i8* %29, i8** %31, !dbg !142
%32 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %7, i32 0, i32 1, !dbg !142
store i8* %30, i8** %32, !dbg !142
%33 = load { i8*, i8* }, { i8*, i8* }* %7, !dbg !142
%34 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %0, i32 0, i32 0, !dbg !143
store { i8*, i64, i64 } zeroinitializer, { i8*, i64, i64 }* %34, !dbg !143
%35 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %0, i32 0, i32 1, !dbg !143
store { i8*, i8* } %33, { i8*, i8* }* %35, !dbg !143
ret void, !dbg !143
.2.if.done: ; preds = %.0.entry
%36 = extractvalue { i8*, i64, i64 } %18, 0, !dbg !144
%37 = extractvalue { i8*, i64, i64 } %18, 1, !dbg !144
%38 = icmp sle i64 %37, 0, !dbg !144
%39 = or i1 false, %38, !dbg !144
br i1 %39, label %54, label %55, !dbg !144, !prof !38
.3.if.then: ; preds = %55
store { i8*, i64 } { i8* getelementptr inbounds ([22 x i8], [22 x i8]* @9, i32 0, i32 0), i64 22 }, { i8*, i64 }* %12, !dbg !145
%40 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %12, i32 0, i32 0, !dbg !145
%41 = load i8*, i8** %40, !dbg !145
%42 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %12, i32 0, i32 1, !dbg !145
%43 = load i64, i64* %42, !dbg !145
%44 = call { i8*, i8* } @errors.New(i8* nest undef, i8* %41, i64 %43), !dbg !145
%45 = extractvalue { i8*, i8* } %44, 0, !dbg !145
%46 = extractvalue { i8*, i8* } %44, 1, !dbg !145
%47 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %13, i32 0, i32 0, !dbg !145
store i8* %45, i8** %47, !dbg !145
%48 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %13, i32 0, i32 1, !dbg !145
store i8* %46, i8** %48, !dbg !145
%49 = load { i8*, i8* }, { i8*, i8* }* %13, !dbg !145
%50 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %0, i32 0, i32 0, !dbg !146
store { i8*, i64, i64 } zeroinitializer, { i8*, i64, i64 }* %50, !dbg !146
%51 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %0, i32 0, i32 1, !dbg !146
store { i8*, i8* } %49, { i8*, i8* }* %51, !dbg !146
ret void, !dbg !146
.4.if.done: ; preds = %55
%52 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %0, i32 0, i32 0, !dbg !147
store { i8*, i64, i64 } zeroinitializer, { i8*, i64, i64 }* %52, !dbg !147
%53 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %0, i32 0, i32 1, !dbg !147
store { i8*, i8* } zeroinitializer, { i8*, i8* }* %53, !dbg !147
ret void, !dbg !147
; <label>:54: ; preds = %.2.if.done
call void @__go_runtime_error(i8* nest undef, i32 0), !dbg !144
unreachable, !dbg !144
; <label>:55: ; preds = %.2.if.done
%56 = bitcast i8* %36 to { i8*, i64 }*, !dbg !144
%57 = getelementptr { i8*, i64 }, { i8*, i64 }* %56, i64 0, !dbg !144
%58 = bitcast { i8*, i64 }* %57 to i8*, !dbg !144
%59 = bitcast i8* %58 to { i8*, i64 }*, !dbg !144
%60 = load { i8*, i64 }, { i8*, i64 }* %59, !dbg !144
%61 = extractvalue { i8*, i8* } %17, 0, !dbg !148
%62 = extractvalue { i8*, i8* } %17, 1, !dbg !148
%63 = bitcast i8* %61 to i8**, !dbg !148
%64 = getelementptr i8*, i8** %63, i32 2, !dbg !148
%65 = load i8*, i8** %64, !dbg !148
store { i8*, i64 } %60, { i8*, i64 }* %8, !dbg !148
%66 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %8, i32 0, i32 0, !dbg !148
%67 = load i8*, i8** %66, !dbg !148
%68 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %8, i32 0, i32 1, !dbg !148
%69 = load i64, i64* %68, !dbg !148
%70 = bitcast i8* %65 to { i8*, i8* } (i8*, i8*, i8*, i64)*, !dbg !148
%71 = call { i8*, i8* } %70(i8* nest undef, i8* %62, i8* %67, i64 %69), !dbg !148
%72 = extractvalue { i8*, i8* } %71, 0, !dbg !148
%73 = extractvalue { i8*, i8* } %71, 1, !dbg !148
%74 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %9, i32 0, i32 0, !dbg !148
store i8* %72, i8** %74, !dbg !148
%75 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %9, i32 0, i32 1, !dbg !148
store i8* %73, i8** %75, !dbg !148
%76 = load { i8*, i8* }, { i8*, i8* }* %9, !dbg !148
store { i8*, i8* } %76, { i8*, i8* }* %10, !dbg !149
%77 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %10, i32 0, i32 0, !dbg !149
%78 = load i8*, i8** %77, !dbg !149
%79 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %10, i32 0, i32 1, !dbg !149
%80 = load i8*, i8** %79, !dbg !149
store { i8*, i8* } zeroinitializer, { i8*, i8* }* %11, !dbg !149
%81 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %11, i32 0, i32 0, !dbg !149
%82 = load i8*, i8** %81, !dbg !149
%83 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %11, i32 0, i32 1, !dbg !149
%84 = load i8*, i8** %83, !dbg !149
%85 = call i64 @__go_interface_compare(i8* nest undef, i8* %78, i8* %80, i8* %82, i8* %84), !dbg !149
%86 = icmp eq i64 %85, 0, !dbg !149
%87 = zext i1 %86 to i8, !dbg !149
%88 = xor i8 %87, 1, !dbg !149
%89 = trunc i8 %88 to i1, !dbg !141
br i1 %89, label %.3.if.then, label %.4.if.done, !dbg !141
}
define void @main.query.pN20_main.SimpleChaincode({ { i8*, i64, i64 }, { i8*, i8* } }* sret, i8* nest, i8*, i8*, i8*, { i8*, i64, i64 }* byval) #2 !dbg !150 {
prologue:
%6 = alloca { i8*, i64 }, !dbg !151
%7 = alloca { i8*, i8* }, !dbg !151
%8 = alloca { i8*, i64 }, !dbg !151
%9 = alloca { { i8*, i64, i64 }, { i8*, i8* } }, !dbg !151
%10 = alloca { i8*, i8* }, !dbg !151
%11 = alloca { i8*, i8* }, !dbg !151
%12 = alloca { i8*, i64 }, !dbg !151
%13 = alloca { i8*, i64 }, !dbg !151
%14 = alloca { i8*, i64 }, !dbg !151
%15 = alloca { i8*, i64 }, !dbg !151
%16 = alloca { i8*, i64 }, !dbg !151
%17 = alloca { i8*, i64 }, !dbg !151
%18 = alloca { i8*, i64 }, !dbg !151
%19 = alloca { i8*, i8* }, !dbg !151
%20 = alloca { i8*, i64 }, !dbg !151
%21 = alloca { i8*, i64 }, !dbg !151
%22 = alloca { i8*, i64 }, !dbg !151
%23 = alloca { i8*, i64 }, !dbg !151
%24 = alloca { i8*, i64 }, !dbg !151
%25 = alloca { i8*, i64 }, !dbg !151
%26 = alloca { i8*, i64 }, !dbg !151
%27 = alloca { i8*, i8* }, !dbg !151
%28 = alloca { i8*, i64 }, !dbg !151
%29 = alloca { i8*, i64 }, !dbg !151
%30 = alloca { i8*, i64 }, !dbg !151
%31 = alloca { i8*, i64 }, !dbg !151
%32 = alloca { i8*, i64 }, !dbg !151
%33 = alloca { i8*, i64 }, !dbg !151
%34 = alloca { i8*, i64 }, !dbg !151
%35 = alloca { i8*, i64 }, !dbg !151
%36 = alloca { i8*, i64 }, !dbg !151
%37 = alloca { i8*, i64 }, !dbg !151
%38 = alloca { i8*, i64 }, !dbg !151
%39 = alloca { i8*, i64 }, !dbg !151
%40 = alloca { i8*, i64 }, !dbg !151
%41 = alloca { i8*, i64 }, !dbg !151
%42 = alloca { i8*, i64, i64 }, !dbg !151
%43 = alloca { i64, { i8*, i8* } }, !dbg !151
%44 = alloca { i8*, i8* }, !dbg !151
%45 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %44, i32 0, i32 0, !dbg !151
store i8* %3, i8** %45, !dbg !151
%46 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %44, i32 0, i32 1, !dbg !151
store i8* %4, i8** %46, !dbg !151
%47 = load { i8*, i8* }, { i8*, i8* }* %44, !dbg !151
%48 = load { i8*, i64, i64 }, { i8*, i64, i64 }* %5, !dbg !151
br label %.0.entry, !dbg !151
.0.entry: ; preds = %prologue
%49 = extractvalue { i8*, i64, i64 } %48, 1, !dbg !152
%50 = icmp eq i64 %49, 1, !dbg !153
%51 = zext i1 %50 to i8, !dbg !153
%52 = xor i8 %51, 1, !dbg !153
%53 = trunc i8 %52 to i1, !dbg !154
br i1 %53, label %.1.if.then, label %.2.if.done, !dbg !154
.1.if.then: ; preds = %.0.entry
store { i8*, i64 } { i8* getelementptr inbounds ([68 x i8], [68 x i8]* @17, i32 0, i32 0), i64 68 }, { i8*, i64 }* %6, !dbg !155
%54 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %6, i32 0, i32 0, !dbg !155
%55 = load i8*, i8** %54, !dbg !155
%56 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %6, i32 0, i32 1, !dbg !155
%57 = load i64, i64* %56, !dbg !155
%58 = call { i8*, i8* } @errors.New(i8* nest undef, i8* %55, i64 %57), !dbg !155
%59 = extractvalue { i8*, i8* } %58, 0, !dbg !155
%60 = extractvalue { i8*, i8* } %58, 1, !dbg !155
%61 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %7, i32 0, i32 0, !dbg !155
store i8* %59, i8** %61, !dbg !155
%62 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %7, i32 0, i32 1, !dbg !155
store i8* %60, i8** %62, !dbg !155
%63 = load { i8*, i8* }, { i8*, i8* }* %7, !dbg !155
%64 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %0, i32 0, i32 0, !dbg !156
store { i8*, i64, i64 } zeroinitializer, { i8*, i64, i64 }* %64, !dbg !156
%65 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %0, i32 0, i32 1, !dbg !156
store { i8*, i8* } %63, { i8*, i8* }* %65, !dbg !156
ret void, !dbg !156
.2.if.done: ; preds = %.0.entry
%66 = extractvalue { i8*, i64, i64 } %48, 0, !dbg !157
%67 = extractvalue { i8*, i64, i64 } %48, 1, !dbg !157
%68 = icmp sle i64 %67, 0, !dbg !157
%69 = or i1 false, %68, !dbg !157
br i1 %69, label %242, label %243, !dbg !157, !prof !38
.3.if.then: ; preds = %243
store { i8*, i64 } { i8* getelementptr inbounds ([34 x i8], [34 x i8]* @18, i32 0, i32 0), i64 34 }, { i8*, i64 }* %12, !dbg !158
%70 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %12, i32 0, i32 0, !dbg !158
%71 = load i8*, i8** %70, !dbg !158
%72 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %12, i32 0, i32 1, !dbg !158
%73 = load i64, i64* %72, !dbg !158
store { i8*, i64 } %248, { i8*, i64 }* %13, !dbg !158
%74 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %13, i32 0, i32 0, !dbg !158
%75 = load i8*, i8** %74, !dbg !158
%76 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %13, i32 0, i32 1, !dbg !158
%77 = load i64, i64* %76, !dbg !158
%78 = call { i8*, i64 } @__go_string_plus(i8* nest undef, i8* %71, i64 %73, i8* %75, i64 %77), !dbg !158
%79 = extractvalue { i8*, i64 } %78, 0, !dbg !158
%80 = extractvalue { i8*, i64 } %78, 1, !dbg !158
%81 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %14, i32 0, i32 0, !dbg !158
store i8* %79, i8** %81, !dbg !158
%82 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %14, i32 0, i32 1, !dbg !158
store i64 %80, i64* %82, !dbg !158
%83 = load { i8*, i64 }, { i8*, i64 }* %14, !dbg !158
store { i8*, i64 } %83, { i8*, i64 }* %15, !dbg !159
%84 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %15, i32 0, i32 0, !dbg !159
%85 = load i8*, i8** %84, !dbg !159
%86 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %15, i32 0, i32 1, !dbg !159
%87 = load i64, i64* %86, !dbg !159
store { i8*, i64 } { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @19, i32 0, i32 0), i64 2 }, { i8*, i64 }* %16, !dbg !159
%88 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %16, i32 0, i32 0, !dbg !159
%89 = load i8*, i8** %88, !dbg !159
%90 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %16, i32 0, i32 1, !dbg !159
%91 = load i64, i64* %90, !dbg !159
%92 = call { i8*, i64 } @__go_string_plus(i8* nest undef, i8* %85, i64 %87, i8* %89, i64 %91), !dbg !159
%93 = extractvalue { i8*, i64 } %92, 0, !dbg !159
%94 = extractvalue { i8*, i64 } %92, 1, !dbg !159
%95 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %17, i32 0, i32 0, !dbg !159
store i8* %93, i8** %95, !dbg !159
%96 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %17, i32 0, i32 1, !dbg !159
store i64 %94, i64* %96, !dbg !159
%97 = load { i8*, i64 }, { i8*, i64 }* %17, !dbg !159
store { i8*, i64 } %97, { i8*, i64 }* %18, !dbg !160
%98 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %18, i32 0, i32 0, !dbg !160
%99 = load i8*, i8** %98, !dbg !160
%100 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %18, i32 0, i32 1, !dbg !160
%101 = load i64, i64* %100, !dbg !160
%102 = call { i8*, i8* } @errors.New(i8* nest undef, i8* %99, i64 %101), !dbg !160
%103 = extractvalue { i8*, i8* } %102, 0, !dbg !160
%104 = extractvalue { i8*, i8* } %102, 1, !dbg !160
%105 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %19, i32 0, i32 0, !dbg !160
store i8* %103, i8** %105, !dbg !160
%106 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %19, i32 0, i32 1, !dbg !160
store i8* %104, i8** %106, !dbg !160
%107 = load { i8*, i8* }, { i8*, i8* }* %19, !dbg !160
%108 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %0, i32 0, i32 0, !dbg !161
store { i8*, i64, i64 } zeroinitializer, { i8*, i64, i64 }* %108, !dbg !161
%109 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %0, i32 0, i32 1, !dbg !161
store { i8*, i8* } %107, { i8*, i8* }* %109, !dbg !161
ret void, !dbg !161
.4.if.done: ; preds = %243
%110 = extractvalue { i8*, i64, i64 } %260, 0, !dbg !162
%111 = icmp eq i8* %110, null, !dbg !162
%112 = zext i1 %111 to i8, !dbg !162
%113 = trunc i8 %112 to i1, !dbg !154
br i1 %113, label %.5.if.then, label %.6.if.done, !dbg !154
.5.if.then: ; preds = %.4.if.done
store { i8*, i64 } { i8* getelementptr inbounds ([25 x i8], [25 x i8]* @20, i32 0, i32 0), i64 25 }, { i8*, i64 }* %20, !dbg !163
%114 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %20, i32 0, i32 0, !dbg !163
%115 = load i8*, i8** %114, !dbg !163
%116 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %20, i32 0, i32 1, !dbg !163
%117 = load i64, i64* %116, !dbg !163
store { i8*, i64 } %248, { i8*, i64 }* %21, !dbg !163
%118 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %21, i32 0, i32 0, !dbg !163
%119 = load i8*, i8** %118, !dbg !163
%120 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %21, i32 0, i32 1, !dbg !163
%121 = load i64, i64* %120, !dbg !163
%122 = call { i8*, i64 } @__go_string_plus(i8* nest undef, i8* %115, i64 %117, i8* %119, i64 %121), !dbg !163
%123 = extractvalue { i8*, i64 } %122, 0, !dbg !163
%124 = extractvalue { i8*, i64 } %122, 1, !dbg !163
%125 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %22, i32 0, i32 0, !dbg !163
store i8* %123, i8** %125, !dbg !163
%126 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %22, i32 0, i32 1, !dbg !163
store i64 %124, i64* %126, !dbg !163
%127 = load { i8*, i64 }, { i8*, i64 }* %22, !dbg !163
store { i8*, i64 } %127, { i8*, i64 }* %23, !dbg !164
%128 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %23, i32 0, i32 0, !dbg !164
%129 = load i8*, i8** %128, !dbg !164
%130 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %23, i32 0, i32 1, !dbg !164
%131 = load i64, i64* %130, !dbg !164
store { i8*, i64 } { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @21, i32 0, i32 0), i64 2 }, { i8*, i64 }* %24, !dbg !164
%132 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %24, i32 0, i32 0, !dbg !164
%133 = load i8*, i8** %132, !dbg !164
%134 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %24, i32 0, i32 1, !dbg !164
%135 = load i64, i64* %134, !dbg !164
%136 = call { i8*, i64 } @__go_string_plus(i8* nest undef, i8* %129, i64 %131, i8* %133, i64 %135), !dbg !164
%137 = extractvalue { i8*, i64 } %136, 0, !dbg !164
%138 = extractvalue { i8*, i64 } %136, 1, !dbg !164
%139 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %25, i32 0, i32 0, !dbg !164
store i8* %137, i8** %139, !dbg !164
%140 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %25, i32 0, i32 1, !dbg !164
store i64 %138, i64* %140, !dbg !164
%141 = load { i8*, i64 }, { i8*, i64 }* %25, !dbg !164
store { i8*, i64 } %141, { i8*, i64 }* %26, !dbg !165
%142 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %26, i32 0, i32 0, !dbg !165
%143 = load i8*, i8** %142, !dbg !165
%144 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %26, i32 0, i32 1, !dbg !165
%145 = load i64, i64* %144, !dbg !165
%146 = call { i8*, i8* } @errors.New(i8* nest undef, i8* %143, i64 %145), !dbg !165
%147 = extractvalue { i8*, i8* } %146, 0, !dbg !165
%148 = extractvalue { i8*, i8* } %146, 1, !dbg !165
%149 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %27, i32 0, i32 0, !dbg !165
store i8* %147, i8** %149, !dbg !165
%150 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %27, i32 0, i32 1, !dbg !165
store i8* %148, i8** %150, !dbg !165
%151 = load { i8*, i8* }, { i8*, i8* }* %27, !dbg !165
%152 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %0, i32 0, i32 0, !dbg !166
store { i8*, i64, i64 } zeroinitializer, { i8*, i64, i64 }* %152, !dbg !166
%153 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %0, i32 0, i32 1, !dbg !166
store { i8*, i8* } %151, { i8*, i8* }* %153, !dbg !166
ret void, !dbg !166
.6.if.done: ; preds = %.4.if.done
store { i8*, i64 } { i8* getelementptr inbounds ([9 x i8], [9 x i8]* @22, i32 0, i32 0), i64 9 }, { i8*, i64 }* %28, !dbg !167
%154 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %28, i32 0, i32 0, !dbg !167
%155 = load i8*, i8** %154, !dbg !167
%156 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %28, i32 0, i32 1, !dbg !167
%157 = load i64, i64* %156, !dbg !167
store { i8*, i64 } %248, { i8*, i64 }* %29, !dbg !167
%158 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %29, i32 0, i32 0, !dbg !167
%159 = load i8*, i8** %158, !dbg !167
%160 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %29, i32 0, i32 1, !dbg !167
%161 = load i64, i64* %160, !dbg !167
%162 = call { i8*, i64 } @__go_string_plus(i8* nest undef, i8* %155, i64 %157, i8* %159, i64 %161), !dbg !167
%163 = extractvalue { i8*, i64 } %162, 0, !dbg !167
%164 = extractvalue { i8*, i64 } %162, 1, !dbg !167
%165 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %30, i32 0, i32 0, !dbg !167
store i8* %163, i8** %165, !dbg !167
%166 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %30, i32 0, i32 1, !dbg !167
store i64 %164, i64* %166, !dbg !167
%167 = load { i8*, i64 }, { i8*, i64 }* %30, !dbg !167
store { i8*, i64 } %167, { i8*, i64 }* %31, !dbg !168
%168 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %31, i32 0, i32 0, !dbg !168
%169 = load i8*, i8** %168, !dbg !168
%170 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %31, i32 0, i32 1, !dbg !168
%171 = load i64, i64* %170, !dbg !168
store { i8*, i64 } { i8* getelementptr inbounds ([12 x i8], [12 x i8]* @23, i32 0, i32 0), i64 12 }, { i8*, i64 }* %32, !dbg !168
%172 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %32, i32 0, i32 0, !dbg !168
%173 = load i8*, i8** %172, !dbg !168
%174 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %32, i32 0, i32 1, !dbg !168
%175 = load i64, i64* %174, !dbg !168
%176 = call { i8*, i64 } @__go_string_plus(i8* nest undef, i8* %169, i64 %171, i8* %173, i64 %175), !dbg !168
%177 = extractvalue { i8*, i64 } %176, 0, !dbg !168
%178 = extractvalue { i8*, i64 } %176, 1, !dbg !168
%179 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %33, i32 0, i32 0, !dbg !168
store i8* %177, i8** %179, !dbg !168
%180 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %33, i32 0, i32 1, !dbg !168
store i64 %178, i64* %180, !dbg !168
%181 = load { i8*, i64 }, { i8*, i64 }* %33, !dbg !168
%182 = extractvalue { i8*, i64, i64 } %260, 0, !dbg !169
%183 = extractvalue { i8*, i64, i64 } %260, 1, !dbg !169
%184 = call { i8*, i64 } @__go_byte_array_to_string(i8* nest undef, i8* %182, i64 %183), !dbg !169
%185 = extractvalue { i8*, i64 } %184, 0, !dbg !169
%186 = extractvalue { i8*, i64 } %184, 1, !dbg !169
%187 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %34, i32 0, i32 0, !dbg !169
store i8* %185, i8** %187, !dbg !169
%188 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %34, i32 0, i32 1, !dbg !169
store i64 %186, i64* %188, !dbg !169
%189 = load { i8*, i64 }, { i8*, i64 }* %34, !dbg !169
store { i8*, i64 } %181, { i8*, i64 }* %35, !dbg !170
%190 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %35, i32 0, i32 0, !dbg !170
%191 = load i8*, i8** %190, !dbg !170
%192 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %35, i32 0, i32 1, !dbg !170
%193 = load i64, i64* %192, !dbg !170
store { i8*, i64 } %189, { i8*, i64 }* %36, !dbg !170
%194 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %36, i32 0, i32 0, !dbg !170
%195 = load i8*, i8** %194, !dbg !170
%196 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %36, i32 0, i32 1, !dbg !170
%197 = load i64, i64* %196, !dbg !170
%198 = call { i8*, i64 } @__go_string_plus(i8* nest undef, i8* %191, i64 %193, i8* %195, i64 %197), !dbg !170
%199 = extractvalue { i8*, i64 } %198, 0, !dbg !170
%200 = extractvalue { i8*, i64 } %198, 1, !dbg !170
%201 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %37, i32 0, i32 0, !dbg !170
store i8* %199, i8** %201, !dbg !170
%202 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %37, i32 0, i32 1, !dbg !170
store i64 %200, i64* %202, !dbg !170
%203 = load { i8*, i64 }, { i8*, i64 }* %37, !dbg !170
store { i8*, i64 } %203, { i8*, i64 }* %38, !dbg !171
%204 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %38, i32 0, i32 0, !dbg !171
%205 = load i8*, i8** %204, !dbg !171
%206 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %38, i32 0, i32 1, !dbg !171
%207 = load i64, i64* %206, !dbg !171
store { i8*, i64 } { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @24, i32 0, i32 0), i64 2 }, { i8*, i64 }* %39, !dbg !171
%208 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %39, i32 0, i32 0, !dbg !171
%209 = load i8*, i8** %208, !dbg !171
%210 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %39, i32 0, i32 1, !dbg !171
%211 = load i64, i64* %210, !dbg !171
%212 = call { i8*, i64 } @__go_string_plus(i8* nest undef, i8* %205, i64 %207, i8* %209, i64 %211), !dbg !171
%213 = extractvalue { i8*, i64 } %212, 0, !dbg !171
%214 = extractvalue { i8*, i64 } %212, 1, !dbg !171
%215 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %40, i32 0, i32 0, !dbg !171
store i8* %213, i8** %215, !dbg !171
%216 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %40, i32 0, i32 1, !dbg !171
store i64 %214, i64* %216, !dbg !171
%217 = load { i8*, i64 }, { i8*, i64 }* %40, !dbg !171
%218 = call i8* @__go_new(i8* nest undef, i8* getelementptr inbounds (%arrayType, %arrayType* @__go_td_AIe1e, i32 0, i32 0, i32 0), i64 16), !dbg !172
%varargs = bitcast i8* %218 to [1 x { i8*, i8* }]*, !dbg !172
%219 = bitcast [1 x { i8*, i8* }]* %varargs to i8*, !dbg !172
%220 = bitcast i8* %219 to { i8*, i8* }*, !dbg !154
%221 = getelementptr { i8*, i8* }, { i8*, i8* }* %220, i64 0, !dbg !154
%222 = bitcast { i8*, i8* }* %221 to i8*, !dbg !154
%223 = call i8* @__go_new(i8* nest undef, i8* getelementptr inbounds (%commonType, %commonType* @__go_tdn_string, i32 0, i32 0), i64 16), !dbg !154
%224 = bitcast i8* %223 to { i8*, i64 }*, !dbg !154
store { i8*, i64 } %217, { i8*, i64 }* %224, !dbg !154
%225 = bitcast { i8*, i64 }* %224 to i8*, !dbg !154
%226 = insertvalue { i8*, i8* } { i8* getelementptr inbounds (%commonType, %commonType* @__go_tdn_string, i32 0, i32 0), i8* undef }, i8* %225, 1, !dbg !154
%227 = bitcast i8* %222 to { i8*, i8* }*, !dbg !173
store { i8*, i8* } %226, { i8*, i8* }* %227, !dbg !173
%228 = getelementptr inbounds i8, i8* %219, i64 0, !dbg !154
%229 = insertvalue { i8*, i64, i64 } undef, i8* %228, 0, !dbg !154
%230 = insertvalue { i8*, i64, i64 } %229, i64 1, 1, !dbg !154
%231 = insertvalue { i8*, i64, i64 } %230, i64 1, 2, !dbg !154
store { i8*, i64 } { i8* getelementptr inbounds ([18 x i8], [18 x i8]* @25, i32 0, i32 0), i64 18 }, { i8*, i64 }* %41, !dbg !174
%232 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %41, i32 0, i32 0, !dbg !174
%233 = load i8*, i8** %232, !dbg !174
%234 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %41, i32 0, i32 1, !dbg !174
%235 = load i64, i64* %234, !dbg !174
store { i8*, i64, i64 } %231, { i8*, i64, i64 }* %42, !dbg !174
call void @fmt.Printf({ i64, { i8*, i8* } }* sret %43, i8* nest undef, i8* %233, i64 %235, { i8*, i64, i64 }* byval %42), !dbg !174
%236 = getelementptr inbounds { i64, { i8*, i8* } }, { i64, { i8*, i8* } }* %43, i32 0, i32 0, !dbg !174
%237 = load i64, i64* %236, !dbg !174
%238 = getelementptr inbounds { i64, { i8*, i8* } }, { i64, { i8*, i8* } }* %43, i32 0, i32 1, !dbg !174
%239 = load { i8*, i8* }, { i8*, i8* }* %238, !dbg !174
%240 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %0, i32 0, i32 0, !dbg !175
store { i8*, i64, i64 } %260, { i8*, i64, i64 }* %240, !dbg !175
%241 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %0, i32 0, i32 1, !dbg !175
store { i8*, i8* } zeroinitializer, { i8*, i8* }* %241, !dbg !175
ret void, !dbg !175
; <label>:242: ; preds = %.2.if.done
call void @__go_runtime_error(i8* nest undef, i32 0), !dbg !157
unreachable, !dbg !157
; <label>:243: ; preds = %.2.if.done
%244 = bitcast i8* %66 to { i8*, i64 }*, !dbg !157
%245 = getelementptr { i8*, i64 }, { i8*, i64 }* %244, i64 0, !dbg !157
%246 = bitcast { i8*, i64 }* %245 to i8*, !dbg !157
%247 = bitcast i8* %246 to { i8*, i64 }*, !dbg !157
%248 = load { i8*, i64 }, { i8*, i64 }* %247, !dbg !157
%249 = extractvalue { i8*, i8* } %47, 0, !dbg !176
%250 = extractvalue { i8*, i8* } %47, 1, !dbg !176
%251 = bitcast i8* %249 to i8**, !dbg !176
%252 = getelementptr i8*, i8** %251, i32 13, !dbg !176
%253 = load i8*, i8** %252, !dbg !176
store { i8*, i64 } %248, { i8*, i64 }* %8, !dbg !176
%254 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %8, i32 0, i32 0, !dbg !176
%255 = load i8*, i8** %254, !dbg !176
%256 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %8, i32 0, i32 1, !dbg !176
%257 = load i64, i64* %256, !dbg !176
%258 = bitcast i8* %253 to void ({ { i8*, i64, i64 }, { i8*, i8* } }*, i8*, i8*, i8*, i64)*, !dbg !176
call void %258({ { i8*, i64, i64 }, { i8*, i8* } }* sret %9, i8* nest undef, i8* %250, i8* %255, i64 %257), !dbg !176
%259 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %9, i32 0, i32 0, !dbg !176
%260 = load { i8*, i64, i64 }, { i8*, i64, i64 }* %259, !dbg !176
%261 = getelementptr inbounds { { i8*, i64, i64 }, { i8*, i8* } }, { { i8*, i64, i64 }, { i8*, i8* } }* %9, i32 0, i32 1, !dbg !176
%262 = load { i8*, i8* }, { i8*, i8* }* %261, !dbg !176
store { i8*, i8* } %262, { i8*, i8* }* %10, !dbg !177
%263 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %10, i32 0, i32 0, !dbg !177
%264 = load i8*, i8** %263, !dbg !177
%265 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %10, i32 0, i32 1, !dbg !177
%266 = load i8*, i8** %265, !dbg !177
store { i8*, i8* } zeroinitializer, { i8*, i8* }* %11, !dbg !177
%267 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %11, i32 0, i32 0, !dbg !177
%268 = load i8*, i8** %267, !dbg !177
%269 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %11, i32 0, i32 1, !dbg !177
%270 = load i8*, i8** %269, !dbg !177
%271 = call i64 @__go_interface_compare(i8* nest undef, i8* %264, i8* %266, i8* %268, i8* %270), !dbg !177
%272 = icmp eq i64 %271, 0, !dbg !177
%273 = zext i1 %272 to i8, !dbg !177
%274 = xor i8 %273, 1, !dbg !177
%275 = trunc i8 %274 to i1, !dbg !154
br i1 %275, label %.3.if.then, label %.4.if.done, !dbg !154
}
define void @main..import(i8* nest) #2 !dbg !178 {
prologue:
%1 = load i1, i1* @"init$guard", !dbg !182
br i1 %1, label %2, label %3, !dbg !182
.0.entry: ; preds = %3
ret void, !dbg !182
; <label>:2: ; preds = %prologue
ret void, !dbg !182
; <label>:3: ; preds = %prologue
store i1 true, i1* @"init$guard", !dbg !182
call void @errors..import(i8* undef), !dbg !182
call void @fmt..import(i8* undef), !dbg !182
call void @strconv..import(i8* undef), !dbg !182
call void @github_com_hyperledger_fabric_core_chaincode_shim..import(i8* undef), !dbg !182
br label %.0.entry, !dbg !182
}
declare void @errors..import(i8*)
declare void @fmt..import(i8*)
declare void @strconv..import(i8*)
declare void @github_com_hyperledger_fabric_core_chaincode_shim..import(i8*)
define void @main.main(i8* nest) #2 !dbg !183 {
prologue:
%1 = alloca { i8*, i8* }, !dbg !184
%2 = alloca { i8*, i8* }, !dbg !184
%3 = alloca { i8*, i8* }, !dbg !184
%4 = alloca { i8*, i8* }, !dbg !184
%5 = alloca { i8*, i64 }, !dbg !184
%6 = alloca { i8*, i64, i64 }, !dbg !184
%7 = alloca { i64, { i8*, i8* } }, !dbg !184
br label %.0.entry, !dbg !184
.0.entry: ; preds = %prologue
%8 = call i8* @__go_new(i8* nest undef, i8* getelementptr inbounds (%structType, %structType* @__go_tdn_main.SimpleChaincode, i32 0, i32 0, i32 0), i64 0), !dbg !185
%new = bitcast i8* %8 to {}*, !dbg !185
%9 = bitcast {}* %new to i8*, !dbg !185
%10 = insertvalue { i8*, i8* } { i8* bitcast ([3 x i8*]* @__go_imt_I4_InitFpN72_github_com_hyperledger_fabric_core_chaincode_shim.ChaincodeStubInterfaceerAN5_uint8eN5_erroree6_InvokeFpN72_github_com_hyperledger_fabric_core_chaincode_shim.ChaincodeStubInterfaceerAN5_uint8eN5_erroreee__pN20_main.SimpleChaincode to i8*), i8* undef }, i8* %9, 1, !dbg !186
store { i8*, i8* } %10, { i8*, i8* }* %1, !dbg !187
%11 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %1, i32 0, i32 0, !dbg !187
%12 = load i8*, i8** %11, !dbg !187
%13 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %1, i32 0, i32 1, !dbg !187
%14 = load i8*, i8** %13, !dbg !187
%15 = call { i8*, i8* } @github_com_hyperledger_fabric_core_chaincode_shim.Start(i8* nest undef, i8* %12, i8* %14), !dbg !187
%16 = extractvalue { i8*, i8* } %15, 0, !dbg !187
%17 = extractvalue { i8*, i8* } %15, 1, !dbg !187
%18 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %2, i32 0, i32 0, !dbg !187
store i8* %16, i8** %18, !dbg !187
%19 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %2, i32 0, i32 1, !dbg !187
store i8* %17, i8** %19, !dbg !187
%20 = load { i8*, i8* }, { i8*, i8* }* %2, !dbg !187
store { i8*, i8* } %20, { i8*, i8* }* %3, !dbg !188
%21 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %3, i32 0, i32 0, !dbg !188
%22 = load i8*, i8** %21, !dbg !188
%23 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %3, i32 0, i32 1, !dbg !188
%24 = load i8*, i8** %23, !dbg !188
store { i8*, i8* } zeroinitializer, { i8*, i8* }* %4, !dbg !188
%25 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %4, i32 0, i32 0, !dbg !188
%26 = load i8*, i8** %25, !dbg !188
%27 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %4, i32 0, i32 1, !dbg !188
%28 = load i8*, i8** %27, !dbg !188
%29 = call i64 @__go_interface_compare(i8* nest undef, i8* %22, i8* %24, i8* %26, i8* %28), !dbg !188
%30 = icmp eq i64 %29, 0, !dbg !188
%31 = zext i1 %30 to i8, !dbg !188
%32 = xor i8 %31, 1, !dbg !188
%33 = trunc i8 %32 to i1, !dbg !186
br i1 %33, label %.1.if.then, label %.2.if.done, !dbg !186
.1.if.then: ; preds = %.0.entry
%34 = call i8* @__go_new(i8* nest undef, i8* getelementptr inbounds (%arrayType, %arrayType* @__go_td_AIe1e, i32 0, i32 0, i32 0), i64 16), !dbg !189
%varargs = bitcast i8* %34 to [1 x { i8*, i8* }]*, !dbg !189
%35 = bitcast [1 x { i8*, i8* }]* %varargs to i8*, !dbg !189
%36 = bitcast i8* %35 to { i8*, i8* }*, !dbg !186
%37 = getelementptr { i8*, i8* }, { i8*, i8* }* %36, i64 0, !dbg !186
%38 = bitcast { i8*, i8* }* %37 to i8*, !dbg !186
%39 = extractvalue { i8*, i8* } %20, 0, !dbg !186
%40 = icmp ne i8* %39, null, !dbg !186
br i1 %40, label %41, label %44, !dbg !186
.2.if.done: ; preds = %44, %.0.entry
ret void, !dbg !186
; <label>:41: ; preds = %.1.if.then
%42 = bitcast i8* %39 to i8**, !dbg !186
%43 = load i8*, i8** %42, !dbg !186
br label %44, !dbg !186
; <label>:44: ; preds = %41, %.1.if.then
%45 = phi i8* [ null, %.1.if.then ], [ %43, %41 ], !dbg !186
%46 = extractvalue { i8*, i8* } %20, 1, !dbg !186
%47 = insertvalue { i8*, i8* } undef, i8* %45, 0, !dbg !186
%48 = insertvalue { i8*, i8* } %47, i8* %46, 1, !dbg !186
%49 = bitcast i8* %38 to { i8*, i8* }*, !dbg !190
store { i8*, i8* } %48, { i8*, i8* }* %49, !dbg !190
%50 = getelementptr inbounds i8, i8* %35, i64 0, !dbg !186
%51 = insertvalue { i8*, i64, i64 } undef, i8* %50, 0, !dbg !186
%52 = insertvalue { i8*, i64, i64 } %51, i64 1, 1, !dbg !186
%53 = insertvalue { i8*, i64, i64 } %52, i64 1, 2, !dbg !186
store { i8*, i64 } { i8* getelementptr inbounds ([35 x i8], [35 x i8]* @26, i32 0, i32 0), i64 35 }, { i8*, i64 }* %5, !dbg !191
%54 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %5, i32 0, i32 0, !dbg !191
%55 = load i8*, i8** %54, !dbg !191
%56 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %5, i32 0, i32 1, !dbg !191
%57 = load i64, i64* %56, !dbg !191
store { i8*, i64, i64 } %53, { i8*, i64, i64 }* %6, !dbg !191
call void @fmt.Printf({ i64, { i8*, i8* } }* sret %7, i8* nest undef, i8* %55, i64 %57, { i8*, i64, i64 }* byval %6), !dbg !191
%58 = getelementptr inbounds { i64, { i8*, i8* } }, { i64, { i8*, i8* } }* %7, i32 0, i32 0, !dbg !191
%59 = load i64, i64* %58, !dbg !191
%60 = getelementptr inbounds { i64, { i8*, i8* } }, { i64, { i8*, i8* } }* %7, i32 0, i32 1, !dbg !191
%61 = load { i8*, i8* }, { i8*, i8* }* %60, !dbg !191
br label %.2.if.done, !dbg !186
}
declare { i8*, i8* } @github_com_hyperledger_fabric_core_chaincode_shim.Start(i8* nest, i8*, i8*)
define linkonce_odr i64 @__go_type_hash_AIe1e(i8*, i64) {
entry:
%2 = bitcast i8* %0 to { i8*, i8* }*
br label %loop
loop: ; preds = %loop, %entry
%3 = phi i64 [ 0, %entry ], [ %10, %loop ]
%4 = phi i64 [ 0, %entry ], [ %9, %loop ]
%5 = getelementptr { i8*, i8* }, { i8*, i8* }* %2, i64 %3
%6 = bitcast { i8*, i8* }* %5 to i8*
%7 = call i64 @__go_type_hash_empty_interface(i8* %6, i64 16)
%8 = mul i64 %4, 33
%9 = add i64 %8, %7
%10 = add i64 %3, 1
%11 = icmp eq i64 %10, 1
br i1 %11, label %exit, label %loop
exit: ; preds = %loop
ret i64 %9
}
define linkonce_odr i8 @__go_type_hash_AIe1e.1(i8*, i8*, i64) {
entry:
%3 = bitcast i8* %0 to { i8*, i8* }*
%4 = bitcast i8* %1 to { i8*, i8* }*
br label %loop
loop: ; preds = %cont, %entry
%5 = phi i64 [ 0, %entry ], [ %12, %cont ]
%6 = getelementptr { i8*, i8* }, { i8*, i8* }* %3, i64 %5
%7 = bitcast { i8*, i8* }* %6 to i8*
%8 = getelementptr { i8*, i8* }, { i8*, i8* }* %4, i64 %5
%9 = bitcast { i8*, i8* }* %8 to i8*
%10 = call i8 @__go_type_equal_empty_interface(i8* %7, i8* %9, i64 16)
%11 = icmp eq i8 %10, 0
br i1 %11, label %retzero, label %cont
exit: ; preds = %cont
ret i8 1
retzero: ; preds = %loop
ret i8 0
cont: ; preds = %loop
%12 = add i64 %5, 1
%13 = icmp eq i64 %12, 1
br i1 %13, label %exit, label %loop
}
define linkonce_odr i64 @__go_type_hash_AIe2e(i8*, i64) {
entry:
%2 = bitcast i8* %0 to { i8*, i8* }*
br label %loop
loop: ; preds = %loop, %entry
%3 = phi i64 [ 0, %entry ], [ %10, %loop ]
%4 = phi i64 [ 0, %entry ], [ %9, %loop ]
%5 = getelementptr { i8*, i8* }, { i8*, i8* }* %2, i64 %3
%6 = bitcast { i8*, i8* }* %5 to i8*
%7 = call i64 @__go_type_hash_empty_interface(i8* %6, i64 16)
%8 = mul i64 %4, 33
%9 = add i64 %8, %7
%10 = add i64 %3, 1
%11 = icmp eq i64 %10, 2
br i1 %11, label %exit, label %loop
exit: ; preds = %loop
ret i64 %9
}
define linkonce_odr i8 @__go_type_hash_AIe2e.3(i8*, i8*, i64) {
entry:
%3 = bitcast i8* %0 to { i8*, i8* }*
%4 = bitcast i8* %1 to { i8*, i8* }*
br label %loop
loop: ; preds = %cont, %entry
%5 = phi i64 [ 0, %entry ], [ %12, %cont ]
%6 = getelementptr { i8*, i8* }, { i8*, i8* }* %3, i64 %5
%7 = bitcast { i8*, i8* }* %6 to i8*
%8 = getelementptr { i8*, i8* }, { i8*, i8* }* %4, i64 %5
%9 = bitcast { i8*, i8* }* %8 to i8*
%10 = call i8 @__go_type_equal_empty_interface(i8* %7, i8* %9, i64 16)
%11 = icmp eq i8 %10, 0
br i1 %11, label %retzero, label %cont
exit: ; preds = %cont
ret i8 1
retzero: ; preds = %loop
ret i8 0
cont: ; preds = %loop
%12 = add i64 %5, 1
%13 = icmp eq i64 %12, 2
br i1 %13, label %exit, label %loop
}
define linkonce_odr i64 @__go_type_hash_Se(i8*, i64) {
entry:
%2 = bitcast i8* %0 to {}*
ret i64 0
}
define linkonce_odr i8 @__go_type_equal_Se(i8*, i8*, i64) {
entry:
%3 = bitcast i8* %0 to {}*
%4 = bitcast i8* %1 to {}*
ret i8 1
retzero: ; No predecessors!
ret i8 0
}
define void @__go_init_main(i8*) #2 {
entry:
call void @main..import(i8* undef)
ret void
}
attributes #0 = { nounwind }
attributes #1 = { noreturn }
attributes #2 = { "disable-tail-calls"="true" "split-stack" }
!llvm.dbg.cu = !{!0}
!llvm.module.flags = !{!3, !4}
!0 = distinct !DICompileUnit(language: DW_LANG_Go, file: !1, producer: "llgo", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !2)
!1 = !DIFile(filename: "chaincode_example02.go", directory: "/root/gocode/src/github.com/chaincode_example02")
!2 = !{}
!3 = !{i32 2, !"Dwarf Version", i32 4}
!4 = !{i32 1, !"Debug Info Version", i32 3}
!5 = distinct !DISubprogram(name: "main.Init.pN20_main.SimpleChaincode", linkageName: "main.Init.pN20_main.SimpleChaincode", scope: null, file: !6, line: 37, type: !7, isLocal: false, isDefinition: true, isOptimized: false, unit: !0, variables: !2)
!6 = !DIFile(filename: "chaincode_example02.go", directory: "")
!7 = !DISubroutineType(types: !8)
!8 = !{!9, !26, !29}
!9 = !DICompositeType(tag: DW_TAG_structure_type, size: 320, align: 64, elements: !10)
!10 = !{!11, !20}
!11 = !DIDerivedType(tag: DW_TAG_member, name: "_", baseType: !12, size: 192, align: 64)
!12 = !DICompositeType(tag: DW_TAG_structure_type, name: "[]byte", size: 192, align: 64, elements: !13)
!13 = !{!14, !17, !19}
!14 = !DIDerivedType(tag: DW_TAG_member, name: "ptr", baseType: !15, size: 64, align: 64)
!15 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !16, size: 64, align: 64)
!16 = !DIBasicType(name: "byte", size: 8, align: 8, encoding: DW_ATE_unsigned)
!17 = !DIDerivedType(tag: DW_TAG_member, name: "len", baseType: !18, size: 64, align: 64, offset: 64)
!18 = !DIBasicType(name: "int", size: 64, align: 64, encoding: DW_ATE_signed)
!19 = !DIDerivedType(tag: DW_TAG_member, name: "cap", baseType: !18, size: 64, align: 64, offset: 128)
!20 = !DIDerivedType(tag: DW_TAG_member, name: "_", baseType: !21, size: 128, align: 64, offset: 192)
!21 = !DIDerivedType(tag: DW_TAG_typedef, name: "error", baseType: !22)
!22 = !DICompositeType(tag: DW_TAG_structure_type, name: "interface{Error() string}", size: 128, align: 64, elements: !23)
!23 = !{!24, !25}
!24 = !DIDerivedType(tag: DW_TAG_member, name: "type", baseType: !15, size: 64, align: 64)
!25 = !DIDerivedType(tag: DW_TAG_member, name: "data", baseType: !15, size: 64, align: 64, offset: 64)
!26 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !27, size: 64, align: 64)
!27 = !DIDerivedType(tag: DW_TAG_typedef, name: "SimpleChaincode", file: !6, line: 34, baseType: !28)
!28 = !DICompositeType(tag: DW_TAG_structure_type, name: "struct{}", align: 8)
!29 = !DIDerivedType(tag: DW_TAG_typedef, name: "ChaincodeStubInterface", baseType: !22)
!30 = !DILocation(line: 37, column: 27, scope: !5)
!31 = !DILocation(line: 38, column: 42, scope: !5)
!32 = !DILocation(line: 43, column: 8, scope: !5)
!33 = !DILocation(line: 43, column: 15, scope: !5)
!34 = !DILocation(line: 0, scope: !5)
!35 = !DILocation(line: 44, column: 25, scope: !5)
!36 = !DILocation(line: 44, column: 3, scope: !5)
!37 = !DILocation(line: 48, column: 10, scope: !5)
!38 = !{!"branch_weights", i32 1, i32 1000}
!39 = !DILocation(line: 51, column: 25, scope: !5)
!40 = !DILocation(line: 51, column: 3, scope: !5)
!41 = !DILocation(line: 53, column: 10, scope: !5)
!42 = !DILocation(line: 56, column: 25, scope: !5)
!43 = !DILocation(line: 56, column: 3, scope: !5)
!44 = !DILocation(line: 58, column: 49, scope: !5)
!45 = !DILocation(line: 58, column: 39, scope: !5)
!46 = !DILocation(line: 58, column: 45, scope: !5)
!47 = !DILocation(line: 58, column: 12, scope: !5)
!48 = !DILocation(line: 61, column: 44, scope: !5)
!49 = !DILocation(line: 61, column: 31, scope: !5)
!50 = !DILocation(line: 61, column: 21, scope: !5)
!51 = !DILocation(line: 62, column: 9, scope: !5)
!52 = !DILocation(line: 63, column: 3, scope: !5)
!53 = !DILocation(line: 66, column: 44, scope: !5)
!54 = !DILocation(line: 66, column: 31, scope: !5)
!55 = !DILocation(line: 66, column: 21, scope: !5)
!56 = !DILocation(line: 67, column: 9, scope: !5)
!57 = !DILocation(line: 68, column: 3, scope: !5)
!58 = !DILocation(line: 71, column: 2, scope: !5)
!59 = !DILocation(line: 49, column: 31, scope: !5)
!60 = !DILocation(line: 49, column: 26, scope: !5)
!61 = !DILocation(line: 50, column: 9, scope: !5)
!62 = !DILocation(line: 54, column: 31, scope: !5)
!63 = !DILocation(line: 54, column: 26, scope: !5)
!64 = !DILocation(line: 55, column: 9, scope: !5)
!65 = distinct !DISubprogram(name: "main.Invoke.pN20_main.SimpleChaincode", linkageName: "main.Invoke.pN20_main.SimpleChaincode", scope: null, file: !6, line: 74, type: !7, isLocal: false, isDefinition: true, isOptimized: false, unit: !0, variables: !2)
!66 = !DILocation(line: 74, column: 27, scope: !65)
!67 = !DILocation(line: 75, column: 49, scope: !65)
!68 = !DILocation(line: 76, column: 14, scope: !65)
!69 = !DILocation(line: 0, scope: !65)
!70 = !DILocation(line: 78, column: 18, scope: !65)
!71 = !DILocation(line: 78, column: 3, scope: !65)
!72 = !DILocation(line: 79, column: 21, scope: !65)
!73 = !DILocation(line: 81, column: 18, scope: !65)
!74 = !DILocation(line: 81, column: 3, scope: !65)
!75 = !DILocation(line: 82, column: 21, scope: !65)
!76 = !DILocation(line: 84, column: 17, scope: !65)
!77 = !DILocation(line: 84, column: 3, scope: !65)
!78 = !DILocation(line: 87, column: 24, scope: !65)
!79 = !DILocation(line: 87, column: 2, scope: !65)
!80 = distinct !DISubprogram(name: "main.invoke.pN20_main.SimpleChaincode", linkageName: "main.invoke.pN20_main.SimpleChaincode", scope: null, file: !6, line: 91, type: !81, isLocal: false, isDefinition: true, isOptimized: false, unit: !0, variables: !2)
!81 = !DISubroutineType(types: !82)
!82 = !{!9, !26, !29, !83}
!83 = !DICompositeType(tag: DW_TAG_structure_type, name: "[]string", size: 192, align: 64, elements: !84)
!84 = !{!85, !17, !19}
!85 = !DIDerivedType(tag: DW_TAG_member, name: "ptr", baseType: !86, size: 64, align: 64)
!86 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !87, size: 64, align: 64)
!87 = !DICompositeType(tag: DW_TAG_structure_type, name: "string", size: 128, align: 64, elements: !88)
!88 = !{!14, !17}
!89 = !DILocation(line: 91, column: 27, scope: !80)
!90 = !DILocation(line: 97, column: 8, scope: !80)
!91 = !DILocation(line: 97, column: 15, scope: !80)
!92 = !DILocation(line: 0, scope: !80)
!93 = !DILocation(line: 98, column: 25, scope: !80)
!94 = !DILocation(line: 98, column: 3, scope: !80)
!95 = !DILocation(line: 101, column: 10, scope: !80)
!96 = !DILocation(line: 108, column: 25, scope: !80)
!97 = !DILocation(line: 108, column: 3, scope: !80)
!98 = !DILocation(line: 110, column: 15, scope: !80)
!99 = !DILocation(line: 111, column: 25, scope: !80)
!100 = !DILocation(line: 111, column: 3, scope: !80)
!101 = !DILocation(line: 113, column: 31, scope: !80)
!102 = !DILocation(line: 113, column: 24, scope: !80)
!103 = !DILocation(line: 115, column: 33, scope: !80)
!104 = !DILocation(line: 116, column: 9, scope: !80)
!105 = !DILocation(line: 117, column: 25, scope: !80)
!106 = !DILocation(line: 117, column: 3, scope: !80)
!107 = !DILocation(line: 119, column: 15, scope: !80)
!108 = !DILocation(line: 120, column: 25, scope: !80)
!109 = !DILocation(line: 120, column: 3, scope: !80)
!110 = !DILocation(line: 122, column: 31, scope: !80)
!111 = !DILocation(line: 122, column: 24, scope: !80)
!112 = !DILocation(line: 125, column: 28, scope: !80)
!113 = !DILocation(line: 127, column: 25, scope: !80)
!114 = !DILocation(line: 127, column: 3, scope: !80)
!115 = !DILocation(line: 129, column: 14, scope: !80)
!116 = !DILocation(line: 130, column: 14, scope: !80)
!117 = !DILocation(line: 131, column: 49, scope: !80)
!118 = !DILocation(line: 131, column: 39, scope: !80)
!119 = !DILocation(line: 131, column: 45, scope: !80)
!120 = !DILocation(line: 131, column: 12, scope: !80)
!121 = !DILocation(line: 134, column: 44, scope: !80)
!122 = !DILocation(line: 134, column: 31, scope: !80)
!123 = !DILocation(line: 134, column: 21, scope: !80)
!124 = !DILocation(line: 135, column: 9, scope: !80)
!125 = !DILocation(line: 136, column: 3, scope: !80)
!126 = !DILocation(line: 139, column: 44, scope: !80)
!127 = !DILocation(line: 139, column: 31, scope: !80)
!128 = !DILocation(line: 139, column: 21, scope: !80)
!129 = !DILocation(line: 140, column: 9, scope: !80)
!130 = !DILocation(line: 141, column: 3, scope: !80)
!131 = !DILocation(line: 144, column: 2, scope: !80)
!132 = !DILocation(line: 102, column: 10, scope: !80)
!133 = !DILocation(line: 106, column: 33, scope: !80)
!134 = !DILocation(line: 107, column: 9, scope: !80)
!135 = !DILocation(line: 125, column: 23, scope: !80)
!136 = !DILocation(line: 126, column: 9, scope: !80)
!137 = distinct !DISubprogram(name: "main.delete.pN20_main.SimpleChaincode", linkageName: "main.delete.pN20_main.SimpleChaincode", scope: null, file: !6, line: 148, type: !81, isLocal: false, isDefinition: true, isOptimized: false, unit: !0, variables: !2)
!138 = !DILocation(line: 148, column: 27, scope: !137)
!139 = !DILocation(line: 149, column: 8, scope: !137)
!140 = !DILocation(line: 149, column: 15, scope: !137)
!141 = !DILocation(line: 0, scope: !137)
!142 = !DILocation(line: 150, column: 25, scope: !137)
!143 = !DILocation(line: 150, column: 3, scope: !137)
!144 = !DILocation(line: 153, column: 11, scope: !137)
!145 = !DILocation(line: 158, column: 25, scope: !137)
!146 = !DILocation(line: 158, column: 3, scope: !137)
!147 = !DILocation(line: 161, column: 2, scope: !137)
!148 = !DILocation(line: 156, column: 22, scope: !137)
!149 = !DILocation(line: 157, column: 9, scope: !137)
!150 = distinct !DISubprogram(name: "main.query.pN20_main.SimpleChaincode", linkageName: "main.query.pN20_main.SimpleChaincode", scope: null, file: !6, line: 165, type: !81, isLocal: false, isDefinition: true, isOptimized: false, unit: !0, variables: !2)
!151 = !DILocation(line: 165, column: 27, scope: !150)
!152 = !DILocation(line: 169, column: 8, scope: !150)
!153 = !DILocation(line: 169, column: 15, scope: !150)
!154 = !DILocation(line: 0, scope: !150)
!155 = !DILocation(line: 170, column: 25, scope: !150)
!156 = !DILocation(line: 170, column: 3, scope: !150)
!157 = !DILocation(line: 173, column: 10, scope: !150)
!158 = !DILocation(line: 178, column: 55, scope: !150)
!159 = !DILocation(line: 178, column: 59, scope: !150)
!160 = !DILocation(line: 179, column: 25, scope: !150)
!161 = !DILocation(line: 179, column: 3, scope: !150)
!162 = !DILocation(line: 182, column: 15, scope: !150)
!163 = !DILocation(line: 183, column: 46, scope: !150)
!164 = !DILocation(line: 183, column: 50, scope: !150)
!165 = !DILocation(line: 184, column: 25, scope: !150)
!166 = !DILocation(line: 184, column: 3, scope: !150)
!167 = !DILocation(line: 187, column: 29, scope: !150)
!168 = !DILocation(line: 187, column: 33, scope: !150)
!169 = !DILocation(line: 187, column: 62, scope: !150)
!170 = !DILocation(line: 187, column: 54, scope: !150)
!171 = !DILocation(line: 187, column: 74, scope: !150)
!172 = !DILocation(line: 188, column: 44, scope: !150)
!173 = !DILocation(line: 188, column: 36, scope: !150)
!174 = !DILocation(line: 188, column: 12, scope: !150)
!175 = !DILocation(line: 189, column: 2, scope: !150)
!176 = !DILocation(line: 176, column: 33, scope: !150)
!177 = !DILocation(line: 177, column: 9, scope: !150)
!178 = distinct !DISubprogram(name: "main..import", linkageName: "main..import", scope: null, type: !179, isLocal: false, isDefinition: true, isOptimized: false, unit: !0, variables: !2)
!179 = !DISubroutineType(types: !180)
!180 = !{!181}
!181 = !DIBasicType(name: "void")
!182 = !DILocation(line: 0, scope: !178)
!183 = distinct !DISubprogram(name: "main.main", linkageName: "main.main", scope: null, file: !6, line: 192, type: !179, isLocal: false, isDefinition: true, isOptimized: false, unit: !0, variables: !2)
!184 = !DILocation(line: 192, column: 6, scope: !183)
!185 = !DILocation(line: 193, column: 23, scope: !183)
!186 = !DILocation(line: 0, scope: !183)
!187 = !DILocation(line: 193, column: 19, scope: !183)
!188 = !DILocation(line: 194, column: 9, scope: !183)
!189 = !DILocation(line: 195, column: 56, scope: !183)
!190 = !DILocation(line: 195, column: 53, scope: !183)
!191 = !DILocation(line: 195, column: 13, scope: !183)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment