Skip to content

Instantly share code, notes, and snippets.

@kmicinski
Created December 4, 2019 03:10
Show Gist options
  • Save kmicinski/0e1985c1e869d4861f30f054d8460039 to your computer and use it in GitHub Desktop.
Save kmicinski/0e1985c1e869d4861f30f054d8460039 to your computer and use it in GitHub Desktop.
; Function Attrs: nobuiltin noinline nounwind
define i64 @foo(i64, i64, i64, i64, i64, i64, i64, i64) local_unnamed_addr #4 {
%9 = load volatile i64, i64* getelementptr inbounds (%struct.State, %struct.State* @__mcsema_reg_state, i64 0, i32 6, i32 13, i32 0, i32 0), align 8
%10 = icmp eq i64 %9, 0
br i1 %10, label %is_null.i, label %__mcsema_verify_reg_state.exit
is_null.i: ; preds = %8
store i64 ptrtoint (i64* getelementptr inbounds ([131072 x i64], [131072 x i64]* @__mcsema_stack, i64 0, i64 131064) to i64), i64* getelementptr inbounds (%struct.State, %struct.State* @__mcsema_reg_state, i64 0, i32 6, i32 13, i32 0, i32 0), align 8
br label %__mcsema_verify_reg_state.exit
__mcsema_verify_reg_state.exit: ; preds = %is_null.i, %8
%11 = phi i64 [ %9, %8 ], [ ptrtoint (i64* getelementptr inbounds ([131072 x i64], [131072 x i64]* @__mcsema_stack, i64 0, i64 131064) to i64), %is_null.i ]
store i64 4389, i64* getelementptr inbounds (%struct.State, %struct.State* @__mcsema_reg_state, i64 0, i32 6, i32 33, i32 0, i32 0), align 8
store i64 ptrtoint ([512 x i64]* @__mcsema_tls to i64), i64* getelementptr inbounds (%struct.State, %struct.State* @__mcsema_reg_state, i64 0, i32 5, i32 7, i32 0, i32 0), align 8
%12 = load volatile i1, i1* @0, align 1
br i1 %12, label %__mcsema_early_init.exit, label %13
; <label>:13: ; preds = %__mcsema_verify_reg_state.exit
store volatile i1 true, i1* @0, align 1
br label %__mcsema_early_init.exit
__mcsema_early_init.exit: ; preds = %13, %__mcsema_verify_reg_state.exit
store i64 %0, i64* getelementptr inbounds (%struct.State, %struct.State* @__mcsema_reg_state, i64 0, i32 6, i32 11, i32 0, i32 0), align 8
store i64 %1, i64* getelementptr inbounds (%struct.State, %struct.State* @__mcsema_reg_state, i64 0, i32 6, i32 9, i32 0, i32 0), align 8
store i64 %2, i64* getelementptr inbounds (%struct.State, %struct.State* @__mcsema_reg_state, i64 0, i32 6, i32 7, i32 0, i32 0), align 8
store i64 %3, i64* getelementptr inbounds (%struct.State, %struct.State* @__mcsema_reg_state, i64 0, i32 6, i32 5, i32 0, i32 0), align 8
store i64 %4, i64* getelementptr inbounds (%struct.State, %struct.State* @__mcsema_reg_state, i64 0, i32 6, i32 17, i32 0, i32 0), align 8
store i64 %5, i64* getelementptr inbounds (%struct.State, %struct.State* @__mcsema_reg_state, i64 0, i32 6, i32 19, i32 0, i32 0), align 8
%14 = inttoptr i64 %11 to i64*
store i64 %7, i64* %14
%15 = add i64 %11, -8
%16 = inttoptr i64 %15 to i64*
store i64 %6, i64* %16
%17 = add i64 %11, -24
store i64 %17, i64* getelementptr inbounds (%struct.State, %struct.State* @__mcsema_reg_state, i64 0, i32 6, i32 13, i32 0, i32 0), align 8
%18 = tail call %struct.Memory* @sub_1125_foo(%struct.State* nonnull @__mcsema_reg_state, i64 4389, %struct.Memory* null)
store i64 %11, i64* getelementptr inbounds (%struct.State, %struct.State* @__mcsema_reg_state, i64 0, i32 6, i32 13, i32 0, i32 0), align 8
%19 = load i64, i64* getelementptr inbounds (%struct.State, %struct.State* @__mcsema_reg_state, i64 0, i32 6, i32 1, i32 0, i32 0), align 8
ret i64 %19
}
; Function Attrs: nounwind
define internal void @__mcsema_constructor() #6 {
%1 = load volatile i1, i1* @0, align 1
br i1 %1, label %__mcsema_early_init.exit, label %2
; <label>:2: ; preds = %0
store volatile i1 true, i1* @0, align 1
br label %__mcsema_early_init.exit
__mcsema_early_init.exit: ; preds = %2, %0
%3 = tail call i64 @callback_sub_1180___libc_csu_init()
ret void
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment