From e687f55643d927846cf9b6ff6db862a785932d25 Mon Sep 17 00:00:00 2001 From: Michael Hohn Date: Thu, 3 Mar 2022 19:21:46 -0800 Subject: [PATCH] Scripts and setup to print the IR graph --- .../cpp/example/polkit-ir.txt | 3820 +++++++++++++++++ PrintIR-pkexec.ql | 29 + PrintIR.sh | 44 + qlpack.yml | 6 +- 4 files changed, 3895 insertions(+), 4 deletions(-) create mode 100644 PrintIR-pkexec.graphtext/cpp/example/polkit-ir.txt create mode 100644 PrintIR-pkexec.ql create mode 100644 PrintIR.sh diff --git a/PrintIR-pkexec.graphtext/cpp/example/polkit-ir.txt b/PrintIR-pkexec.graphtext/cpp/example/polkit-ir.txt new file mode 100644 index 0000000..0b70c1a --- /dev/null +++ b/PrintIR-pkexec.graphtext/cpp/example/polkit-ir.txt @@ -0,0 +1,3820 @@ +/src/programs/pkexec.c: +# 435| int main(int, char*[]) +# 435| Block 0 +# 435| v435_1(void) = EnterFunction : +# 435| m435_2(unknown) = AliasedDefinition : +# 435| m435_3(unknown) = InitializeNonLocal : +# 435| m435_4(unknown) = Chi : total:m435_2, partial:m435_3 +# 435| r435_5(glval) = VariableAddress[argc] : +# 435| m435_6(int) = InitializeParameter[argc] : &:r435_5 +# 435| r435_7(glval) = VariableAddress[argv] : +# 435| m435_8(char **) = InitializeParameter[argv] : &:r435_7 +# 435| r435_9(char **) = Load[argv] : &:r435_7, m435_8 +# 435| m435_10(unknown) = InitializeIndirection[argv] : &:r435_9 +# 437| r437_1(glval) = VariableAddress[n] : +# 437| m437_2(unsigned int) = Uninitialized[n] : &:r437_1 +# 438| r438_1(glval) = VariableAddress[ret] : +# 438| m438_2(unsigned int) = Uninitialized[ret] : &:r438_1 +# 439| r439_1(glval) = VariableAddress[rc] : +# 439| m439_2(int) = Uninitialized[rc] : &:r439_1 +# 440| r440_1(glval) = VariableAddress[opt_show_help] : +# 440| m440_2(int) = Uninitialized[opt_show_help] : &:r440_1 +# 441| r441_1(glval) = VariableAddress[opt_show_version] : +# 441| m441_2(int) = Uninitialized[opt_show_version] : &:r441_1 +# 442| r442_1(glval) = VariableAddress[opt_disable_internal_agent] : +# 442| m442_2(int) = Uninitialized[opt_disable_internal_agent] : &:r442_1 +# 443| r443_1(glval<_PolkitAuthority *>) = VariableAddress[authority] : +# 443| m443_2(_PolkitAuthority *) = Uninitialized[authority] : &:r443_1 +# 444| r444_1(glval<_PolkitAuthorizationResult *>) = VariableAddress[result] : +# 444| m444_2(_PolkitAuthorizationResult *) = Uninitialized[result] : &:r444_1 +# 445| r445_1(glval<_PolkitSubject *>) = VariableAddress[subject] : +# 445| m445_2(_PolkitSubject *) = Uninitialized[subject] : &:r445_1 +# 446| r446_1(glval<_PolkitDetails *>) = VariableAddress[details] : +# 446| m446_2(_PolkitDetails *) = Uninitialized[details] : &:r446_1 +# 447| r447_1(glval<_GError *>) = VariableAddress[error] : +# 447| m447_2(_GError *) = Uninitialized[error] : &:r447_1 +# 448| r448_1(glval) = VariableAddress[action_id] : +# 448| m448_2(char *) = Uninitialized[action_id] : &:r448_1 +# 449| r449_1(glval) = VariableAddress[allow_gui] : +# 449| m449_2(int) = Uninitialized[allow_gui] : &:r449_1 +# 450| r450_1(glval) = VariableAddress[exec_argv] : +# 450| m450_2(char **) = Uninitialized[exec_argv] : &:r450_1 +# 451| r451_1(glval) = VariableAddress[path] : +# 451| m451_2(char *) = Uninitialized[path] : &:r451_1 +# 452| r452_1(glval) = VariableAddress[pwstruct] : +# 452| m452_2(passwd) = Uninitialized[pwstruct] : &:r452_1 +# 453| r453_1(glval) = VariableAddress[pwbuf] : +# 453| m453_2(char[8192]) = Uninitialized[pwbuf] : &:r453_1 +# 454| r454_1(glval) = VariableAddress[s] : +# 454| m454_2(char *) = Uninitialized[s] : &:r454_1 +# 455| r455_1(glval) = VariableAddress[environment_variables_to_save] : +# 455| m455_2(char *[16]) = Uninitialized[environment_variables_to_save] : &:r455_1 +# 455| r455_3(int) = Constant[0] : +# 455| r455_4(glval) = PointerAdd[8] : r455_1, r455_3 +# 456| r456_1(glval) = StringConstant["SHELL"] : +# 456| r456_2(char *) = Convert : r456_1 +# 456| r456_3(char *) = Convert : r456_2 +# 456| m456_4(char *) = Store[?] : &:r455_4, r456_3 +# 456| m456_5(char *[16]) = Chi : total:m455_2, partial:m456_4 +# 455| r455_5(int) = Constant[1] : +# 455| r455_6(glval) = PointerAdd[8] : r455_1, r455_5 +# 457| r457_1(glval) = StringConstant["LANG"] : +# 457| r457_2(char *) = Convert : r457_1 +# 457| r457_3(char *) = Convert : r457_2 +# 457| m457_4(char *) = Store[?] : &:r455_6, r457_3 +# 457| m457_5(char *[16]) = Chi : total:m456_5, partial:m457_4 +# 455| r455_7(int) = Constant[2] : +# 455| r455_8(glval) = PointerAdd[8] : r455_1, r455_7 +# 458| r458_1(glval) = StringConstant["LINGUAS"] : +# 458| r458_2(char *) = Convert : r458_1 +# 458| r458_3(char *) = Convert : r458_2 +# 458| m458_4(char *) = Store[?] : &:r455_8, r458_3 +# 458| m458_5(char *[16]) = Chi : total:m457_5, partial:m458_4 +# 455| r455_9(int) = Constant[3] : +# 455| r455_10(glval) = PointerAdd[8] : r455_1, r455_9 +# 459| r459_1(glval) = StringConstant["LANGUAGE"] : +# 459| r459_2(char *) = Convert : r459_1 +# 459| r459_3(char *) = Convert : r459_2 +# 459| m459_4(char *) = Store[?] : &:r455_10, r459_3 +# 459| m459_5(char *[16]) = Chi : total:m458_5, partial:m459_4 +# 455| r455_11(int) = Constant[4] : +# 455| r455_12(glval) = PointerAdd[8] : r455_1, r455_11 +# 460| r460_1(glval) = StringConstant["LC_COLLATE"] : +# 460| r460_2(char *) = Convert : r460_1 +# 460| r460_3(char *) = Convert : r460_2 +# 460| m460_4(char *) = Store[?] : &:r455_12, r460_3 +# 460| m460_5(char *[16]) = Chi : total:m459_5, partial:m460_4 +# 455| r455_13(int) = Constant[5] : +# 455| r455_14(glval) = PointerAdd[8] : r455_1, r455_13 +# 461| r461_1(glval) = StringConstant["LC_CTYPE"] : +# 461| r461_2(char *) = Convert : r461_1 +# 461| r461_3(char *) = Convert : r461_2 +# 461| m461_4(char *) = Store[?] : &:r455_14, r461_3 +# 461| m461_5(char *[16]) = Chi : total:m460_5, partial:m461_4 +# 455| r455_15(int) = Constant[6] : +# 455| r455_16(glval) = PointerAdd[8] : r455_1, r455_15 +# 462| r462_1(glval) = StringConstant["LC_MESSAGES"] : +# 462| r462_2(char *) = Convert : r462_1 +# 462| r462_3(char *) = Convert : r462_2 +# 462| m462_4(char *) = Store[?] : &:r455_16, r462_3 +# 462| m462_5(char *[16]) = Chi : total:m461_5, partial:m462_4 +# 455| r455_17(int) = Constant[7] : +# 455| r455_18(glval) = PointerAdd[8] : r455_1, r455_17 +# 463| r463_1(glval) = StringConstant["LC_MONETARY"] : +# 463| r463_2(char *) = Convert : r463_1 +# 463| r463_3(char *) = Convert : r463_2 +# 463| m463_4(char *) = Store[?] : &:r455_18, r463_3 +# 463| m463_5(char *[16]) = Chi : total:m462_5, partial:m463_4 +# 455| r455_19(int) = Constant[8] : +# 455| r455_20(glval) = PointerAdd[8] : r455_1, r455_19 +# 464| r464_1(glval) = StringConstant["LC_NUMERIC"] : +# 464| r464_2(char *) = Convert : r464_1 +# 464| r464_3(char *) = Convert : r464_2 +# 464| m464_4(char *) = Store[?] : &:r455_20, r464_3 +# 464| m464_5(char *[16]) = Chi : total:m463_5, partial:m464_4 +# 455| r455_21(int) = Constant[9] : +# 455| r455_22(glval) = PointerAdd[8] : r455_1, r455_21 +# 465| r465_1(glval) = StringConstant["LC_TIME"] : +# 465| r465_2(char *) = Convert : r465_1 +# 465| r465_3(char *) = Convert : r465_2 +# 465| m465_4(char *) = Store[?] : &:r455_22, r465_3 +# 465| m465_5(char *[16]) = Chi : total:m464_5, partial:m465_4 +# 455| r455_23(int) = Constant[10] : +# 455| r455_24(glval) = PointerAdd[8] : r455_1, r455_23 +# 466| r466_1(glval) = StringConstant["LC_ALL"] : +# 466| r466_2(char *) = Convert : r466_1 +# 466| r466_3(char *) = Convert : r466_2 +# 466| m466_4(char *) = Store[?] : &:r455_24, r466_3 +# 466| m466_5(char *[16]) = Chi : total:m465_5, partial:m466_4 +# 455| r455_25(int) = Constant[11] : +# 455| r455_26(glval) = PointerAdd[8] : r455_1, r455_25 +# 467| r467_1(glval) = StringConstant["TERM"] : +# 467| r467_2(char *) = Convert : r467_1 +# 467| r467_3(char *) = Convert : r467_2 +# 467| m467_4(char *) = Store[?] : &:r455_26, r467_3 +# 467| m467_5(char *[16]) = Chi : total:m466_5, partial:m467_4 +# 455| r455_27(int) = Constant[12] : +# 455| r455_28(glval) = PointerAdd[8] : r455_1, r455_27 +# 468| r468_1(glval) = StringConstant["COLORTERM"] : +# 468| r468_2(char *) = Convert : r468_1 +# 468| r468_3(char *) = Convert : r468_2 +# 468| m468_4(char *) = Store[?] : &:r455_28, r468_3 +# 468| m468_5(char *[16]) = Chi : total:m467_5, partial:m468_4 +# 455| r455_29(int) = Constant[13] : +# 455| r455_30(glval) = PointerAdd[8] : r455_1, r455_29 +# 482| r482_1(glval) = StringConstant["DISPLAY"] : +# 482| r482_2(char *) = Convert : r482_1 +# 482| r482_3(char *) = Convert : r482_2 +# 482| m482_4(char *) = Store[?] : &:r455_30, r482_3 +# 482| m482_5(char *[16]) = Chi : total:m468_5, partial:m482_4 +# 455| r455_31(int) = Constant[14] : +# 455| r455_32(glval) = PointerAdd[8] : r455_1, r455_31 +# 483| r483_1(glval) = StringConstant["XAUTHORITY"] : +# 483| r483_2(char *) = Convert : r483_1 +# 483| r483_3(char *) = Convert : r483_2 +# 483| m483_4(char *) = Store[?] : &:r455_32, r483_3 +# 483| m483_5(char *[16]) = Chi : total:m482_5, partial:m483_4 +# 455| r455_33(int) = Constant[15] : +# 455| r455_34(glval) = PointerAdd[8] : r455_1, r455_33 +# 484| r484_1(char *) = Constant[0] : +# 484| m484_2(char *) = Store[?] : &:r455_34, r484_1 +# 484| m484_3(char *[16]) = Chi : total:m483_5, partial:m484_2 +# 486| r486_1(glval<_GPtrArray *>) = VariableAddress[saved_env] : +# 486| m486_2(_GPtrArray *) = Uninitialized[saved_env] : &:r486_1 +# 487| r487_1(glval) = VariableAddress[opt_user] : +# 487| m487_2(char *) = Uninitialized[opt_user] : &:r487_1 +# 488| r488_1(glval) = VariableAddress[pid_of_caller] : +# 488| m488_2(int) = Uninitialized[pid_of_caller] : &:r488_1 +# 489| r489_1(glval) = VariableAddress[local_agent_handle] : +# 489| m489_2(void *) = Uninitialized[local_agent_handle] : &:r489_1 +# 491| r491_1(unsigned int) = Constant[127] : +# 491| r491_2(glval) = VariableAddress[ret] : +# 491| m491_3(unsigned int) = Store[ret] : &:r491_2, r491_1 +# 492| r492_1(_PolkitAuthority *) = Constant[0] : +# 492| r492_2(glval<_PolkitAuthority *>) = VariableAddress[authority] : +# 492| m492_3(_PolkitAuthority *) = Store[authority] : &:r492_2, r492_1 +# 493| r493_1(_PolkitSubject *) = Constant[0] : +# 493| r493_2(glval<_PolkitSubject *>) = VariableAddress[subject] : +# 493| m493_3(_PolkitSubject *) = Store[subject] : &:r493_2, r493_1 +# 494| r494_1(_PolkitDetails *) = Constant[0] : +# 494| r494_2(glval<_PolkitDetails *>) = VariableAddress[details] : +# 494| m494_3(_PolkitDetails *) = Store[details] : &:r494_2, r494_1 +# 495| r495_1(_PolkitAuthorizationResult *) = Constant[0] : +# 495| r495_2(glval<_PolkitAuthorizationResult *>) = VariableAddress[result] : +# 495| m495_3(_PolkitAuthorizationResult *) = Store[result] : &:r495_2, r495_1 +# 496| r496_1(char *) = Constant[0] : +# 496| r496_2(glval) = VariableAddress[action_id] : +# 496| m496_3(char *) = Store[action_id] : &:r496_2, r496_1 +# 497| r497_1(_GPtrArray *) = Constant[0] : +# 497| r497_2(glval<_GPtrArray *>) = VariableAddress[saved_env] : +# 497| m497_3(_GPtrArray *) = Store[saved_env] : &:r497_2, r497_1 +# 498| r498_1(char *) = Constant[0] : +# 498| r498_2(glval) = VariableAddress[path] : +# 498| m498_3(char *) = Store[path] : &:r498_2, r498_1 +# 499| r499_1(char **) = Constant[0] : +# 499| r499_2(glval) = VariableAddress[exec_argv] : +# 499| m499_3(char **) = Store[exec_argv] : &:r499_2, r499_1 +# 500| r500_1(char *) = Constant[0] : +# 500| r500_2(glval) = VariableAddress[command_line] : +# 500| m500_3(char *) = Store[command_line] : &:r500_2, r500_1 +# 500| m500_4(unknown) = Chi : total:m435_4, partial:m500_3 +# 501| r501_1(char *) = Constant[0] : +# 501| r501_2(glval) = VariableAddress[opt_user] : +# 501| m501_3(char *) = Store[opt_user] : &:r501_2, r501_1 +# 502| r502_1(void *) = Constant[0] : +# 502| r502_2(glval) = VariableAddress[local_agent_handle] : +# 502| m502_3(void *) = Store[local_agent_handle] : &:r502_2, r502_1 +# 505| r505_1(glval) = FunctionAddress[setenv] : +# 505| r505_2(glval) = StringConstant["GIO_USE_VFS"] : +# 505| r505_3(char *) = Convert : r505_2 +# 505| r505_4(char *) = Convert : r505_3 +# 505| r505_5(glval) = StringConstant["local"] : +# 505| r505_6(char *) = Convert : r505_5 +# 505| r505_7(char *) = Convert : r505_6 +# 505| r505_8(int) = Constant[1] : +# 505| r505_9(int) = Call[setenv] : func:r505_1, 0:r505_4, 1:r505_7, 2:r505_8 +# 505| m505_10(unknown) = ^CallSideEffect : ~m500_4 +# 505| m505_11(unknown) = Chi : total:m500_4, partial:m505_10 +# 505| v505_12(void) = ^BufferReadSideEffect[0] : &:r505_4, ~m435_3 +# 505| v505_13(void) = ^BufferReadSideEffect[1] : &:r505_7, ~m435_3 +# 508| r508_1(glval) = FunctionAddress[geteuid] : +# 508| r508_2(unsigned int) = Call[geteuid] : func:r508_1 +# 508| m508_3(unknown) = ^CallSideEffect : ~m505_11 +# 508| m508_4(unknown) = Chi : total:m505_11, partial:m508_3 +# 508| r508_5(unsigned int) = Constant[0] : +# 508| r508_6(int) = CompareNE : r508_2, r508_5 +# 508| v508_7(void) = ConditionalBranch : r508_6 +#-----| False -> Block 2 +#-----| True -> Block 1 + +# 510| Block 1 +# 510| r510_1(glval) = FunctionAddress[g_printerr] : +# 510| r510_2(glval) = StringConstant["pkexec must be setuid root\n"] : +# 510| r510_3(char *) = Convert : r510_2 +# 510| r510_4(char *) = Convert : r510_3 +# 510| v510_5(void) = Call[g_printerr] : func:r510_1, 0:r510_4 +# 510| m510_6(unknown) = ^CallSideEffect : ~m508_4 +# 510| m510_7(unknown) = Chi : total:m508_4, partial:m510_6 +# 510| v510_8(void) = ^BufferReadSideEffect[0] : &:r510_4, ~m435_3 +# 511| v511_1(void) = NoOp : +#-----| Goto -> Block 184 + +# 514| Block 2 +# 514| r514_1(glval) = FunctionAddress[g_strdup] : +# 514| r514_2(glval) = FunctionAddress[g_get_user_name] : +# 514| r514_3(char *) = Call[g_get_user_name] : func:r514_2 +# 514| m514_4(unknown) = ^CallSideEffect : ~m508_4 +# 514| m514_5(unknown) = Chi : total:m508_4, partial:m514_4 +# 514| r514_6(char *) = Call[g_strdup] : func:r514_1, 0:r514_3 +# 514| m514_7(unknown) = ^CallSideEffect : ~m514_5 +# 514| m514_8(unknown) = Chi : total:m514_5, partial:m514_7 +# 514| v514_9(void) = ^BufferReadSideEffect[0] : &:r514_3, ~m514_8 +# 514| r514_10(glval) = VariableAddress[original_user_name] : +# 514| m514_11(char *) = Store[original_user_name] : &:r514_10, r514_6 +# 514| m514_12(unknown) = Chi : total:m514_8, partial:m514_11 +# 515| r515_1(glval) = VariableAddress[original_user_name] : +# 515| r515_2(char *) = Load[original_user_name] : &:r515_1, m514_11 +# 515| r515_3(char *) = Constant[0] : +# 515| r515_4(int) = CompareEQ : r515_2, r515_3 +# 515| v515_5(void) = ConditionalBranch : r515_4 +#-----| False -> Block 4 +#-----| True -> Block 3 + +# 517| Block 3 +# 517| r517_1(glval) = FunctionAddress[g_printerr] : +# 517| r517_2(glval) = StringConstant["Error getting user name.\n"] : +# 517| r517_3(char *) = Convert : r517_2 +# 517| r517_4(char *) = Convert : r517_3 +# 517| v517_5(void) = Call[g_printerr] : func:r517_1, 0:r517_4 +# 517| m517_6(unknown) = ^CallSideEffect : ~m514_12 +# 517| m517_7(unknown) = Chi : total:m514_12, partial:m517_6 +# 517| v517_8(void) = ^BufferReadSideEffect[0] : &:r517_4, ~m435_3 +# 518| v518_1(void) = NoOp : +#-----| Goto -> Block 184 + +# 521| Block 4 +# 521| r521_1(glval) = FunctionAddress[g_get_current_dir] : +# 521| r521_2(char *) = Call[g_get_current_dir] : func:r521_1 +# 521| m521_3(unknown) = ^CallSideEffect : ~m514_12 +# 521| m521_4(unknown) = Chi : total:m514_12, partial:m521_3 +# 521| r521_5(glval) = VariableAddress[original_cwd] : +# 521| m521_6(char *) = Store[original_cwd] : &:r521_5, r521_2 +# 521| m521_7(unknown) = Chi : total:m521_4, partial:m521_6 +# 521| r521_8(char *) = CopyValue : r521_2 +# 521| r521_9(char *) = Constant[0] : +# 521| r521_10(int) = CompareEQ : r521_8, r521_9 +# 521| v521_11(void) = ConditionalBranch : r521_10 +#-----| False -> Block 6 +#-----| True -> Block 5 + +# 523| Block 5 +# 523| r523_1(glval) = FunctionAddress[g_printerr] : +# 523| r523_2(glval) = StringConstant["Error getting cwd: %s\n"] : +# 523| r523_3(char *) = Convert : r523_2 +# 523| r523_4(char *) = Convert : r523_3 +# 524| r524_1(glval) = FunctionAddress[g_strerror] : +# 524| r524_2(glval) = FunctionAddress[__errno_location] : +# 524| r524_3(int *) = Call[__errno_location] : func:r524_2 +# 524| m524_4(unknown) = ^CallSideEffect : ~m521_7 +# 524| m524_5(unknown) = Chi : total:m521_7, partial:m524_4 +# 524| r524_6(int) = Load[?] : &:r524_3, ~m524_5 +# 524| r524_7(char *) = Call[g_strerror] : func:r524_1, 0:r524_6 +# 524| m524_8(unknown) = ^CallSideEffect : ~m524_5 +# 524| m524_9(unknown) = Chi : total:m524_5, partial:m524_8 +# 523| v523_5(void) = Call[g_printerr] : func:r523_1, 0:r523_4, 1:r524_7 +# 523| m523_6(unknown) = ^CallSideEffect : ~m524_9 +# 523| m523_7(unknown) = Chi : total:m524_9, partial:m523_6 +# 523| v523_8(void) = ^BufferReadSideEffect[0] : &:r523_4, ~m435_3 +# 524| v524_10(void) = ^BufferReadSideEffect[1] : &:r524_7, ~m523_7 +# 524| m524_11(unknown) = ^BufferMayWriteSideEffect[1] : &:r524_7 +# 524| m524_12(unknown) = Chi : total:m523_7, partial:m524_11 +# 525| v525_1(void) = NoOp : +#-----| Goto -> Block 184 + +# 531| Block 6 +# 531| r531_1(int) = Constant[0] : +# 531| r531_2(glval) = VariableAddress[opt_show_help] : +# 531| m531_3(int) = Store[opt_show_help] : &:r531_2, r531_1 +# 532| r532_1(int) = Constant[0] : +# 532| r532_2(glval) = VariableAddress[opt_show_version] : +# 532| m532_3(int) = Store[opt_show_version] : &:r532_2, r532_1 +# 533| r533_1(int) = Constant[0] : +# 533| r533_2(glval) = VariableAddress[opt_disable_internal_agent] : +# 533| m533_3(int) = Store[opt_disable_internal_agent] : &:r533_2, r533_1 +# 534| r534_1(unsigned int) = Constant[1] : +# 534| r534_2(glval) = VariableAddress[n] : +# 534| m534_3(unsigned int) = Store[n] : &:r534_2, r534_1 +#-----| Goto -> Block 7 + +# 534| Block 7 +# 534| m534_4(unknown) = Phi : from 6:~m521_7, from 8:~m534_17 +# 534| m534_5(char *) = Phi : from 6:m501_3, from 8:m534_18 +# 534| m534_6(int) = Phi : from 6:m532_3, from 8:m534_19 +# 534| m534_7(int) = Phi : from 6:m531_3, from 8:m534_20 +# 534| m534_8(int) = Phi : from 6:m533_3, from 8:m534_21 +# 534| m534_9(unsigned int) = Phi : from 6:m534_3, from 8:m534_27 +# 534| r534_10(glval) = VariableAddress[n] : +# 534| r534_11(unsigned int) = Load[n] : &:r534_10, m534_9 +# 534| r534_12(glval) = VariableAddress[argc] : +# 534| r534_13(int) = Load[argc] : &:r534_12, m435_6 +# 534| r534_14(unsigned int) = Convert : r534_13 +# 534| r534_15(int) = CompareLT : r534_11, r534_14 +# 534| v534_16(void) = ConditionalBranch : r534_15 +#-----| False -> Block 23 +#-----| True -> Block 9 + +# 534| Block 8 +# 534| m534_17(unknown) = Phi : from 10:~m534_4, from 12:~m534_4, from 19:~m558_11, from 21:~m534_4 +# 534| m534_18(char *) = Phi : from 10:m534_5, from 12:m534_5, from 19:m558_14, from 21:m534_5 +# 534| m534_19(int) = Phi : from 10:m534_6, from 12:m542_3, from 19:m534_6, from 21:m534_6 +# 534| m534_20(int) = Phi : from 10:m538_3, from 12:m534_7, from 19:m534_7, from 21:m534_7 +# 534| m534_21(int) = Phi : from 10:m534_8, from 12:m534_8, from 19:m534_8, from 21:m562_3 +# 534| m534_22(unsigned int) = Phi : from 10:m534_9, from 12:m534_9, from 19:m546_5, from 21:m534_9 +# 534| r534_23(glval) = VariableAddress[n] : +# 534| r534_24(unsigned int) = Load[n] : &:r534_23, m534_22 +# 534| r534_25(unsigned int) = Constant[1] : +# 534| r534_26(unsigned int) = Add : r534_24, r534_25 +# 534| m534_27(unsigned int) = Store[n] : &:r534_23, r534_26 +#-----| Goto (back edge) -> Block 7 + +# 536| Block 9 +# 536| r536_1(glval) = FunctionAddress[strcmp] : +# 536| r536_2(glval) = VariableAddress[argv] : +# 536| r536_3(char **) = Load[argv] : &:r536_2, m435_8 +# 536| r536_4(glval) = VariableAddress[n] : +# 536| r536_5(unsigned int) = Load[n] : &:r536_4, m534_9 +# 536| r536_6(glval) = PointerAdd[8] : r536_3, r536_5 +# 536| r536_7(char *) = Load[?] : &:r536_6, ~m435_10 +# 536| r536_8(char *) = Convert : r536_7 +# 536| r536_9(glval) = StringConstant["--help"] : +# 536| r536_10(char *) = Convert : r536_9 +# 536| r536_11(char *) = Convert : r536_10 +# 536| r536_12(int) = Call[strcmp] : func:r536_1, 0:r536_8, 1:r536_11 +# 536| v536_13(void) = ^BufferReadSideEffect[0] : &:r536_8, ~m534_4 +# 536| v536_14(void) = ^BufferReadSideEffect[1] : &:r536_11, ~m435_3 +# 536| r536_15(int) = Constant[0] : +# 536| r536_16(int) = CompareEQ : r536_12, r536_15 +# 536| v536_17(void) = ConditionalBranch : r536_16 +#-----| False -> Block 11 +#-----| True -> Block 10 + +# 538| Block 10 +# 538| r538_1(int) = Constant[1] : +# 538| r538_2(glval) = VariableAddress[opt_show_help] : +# 538| m538_3(int) = Store[opt_show_help] : &:r538_2, r538_1 +#-----| Goto -> Block 8 + +# 540| Block 11 +# 540| r540_1(glval) = FunctionAddress[strcmp] : +# 540| r540_2(glval) = VariableAddress[argv] : +# 540| r540_3(char **) = Load[argv] : &:r540_2, m435_8 +# 540| r540_4(glval) = VariableAddress[n] : +# 540| r540_5(unsigned int) = Load[n] : &:r540_4, m534_9 +# 540| r540_6(glval) = PointerAdd[8] : r540_3, r540_5 +# 540| r540_7(char *) = Load[?] : &:r540_6, ~m435_10 +# 540| r540_8(char *) = Convert : r540_7 +# 540| r540_9(glval) = StringConstant["--version"] : +# 540| r540_10(char *) = Convert : r540_9 +# 540| r540_11(char *) = Convert : r540_10 +# 540| r540_12(int) = Call[strcmp] : func:r540_1, 0:r540_8, 1:r540_11 +# 540| v540_13(void) = ^BufferReadSideEffect[0] : &:r540_8, ~m534_4 +# 540| v540_14(void) = ^BufferReadSideEffect[1] : &:r540_11, ~m435_3 +# 540| r540_15(int) = Constant[0] : +# 540| r540_16(int) = CompareEQ : r540_12, r540_15 +# 540| v540_17(void) = ConditionalBranch : r540_16 +#-----| False -> Block 13 +#-----| True -> Block 12 + +# 542| Block 12 +# 542| r542_1(int) = Constant[1] : +# 542| r542_2(glval) = VariableAddress[opt_show_version] : +# 542| m542_3(int) = Store[opt_show_version] : &:r542_2, r542_1 +#-----| Goto -> Block 8 + +# 544| Block 13 +# 544| r544_1(glval) = FunctionAddress[strcmp] : +# 544| r544_2(glval) = VariableAddress[argv] : +# 544| r544_3(char **) = Load[argv] : &:r544_2, m435_8 +# 544| r544_4(glval) = VariableAddress[n] : +# 544| r544_5(unsigned int) = Load[n] : &:r544_4, m534_9 +# 544| r544_6(glval) = PointerAdd[8] : r544_3, r544_5 +# 544| r544_7(char *) = Load[?] : &:r544_6, ~m435_10 +# 544| r544_8(char *) = Convert : r544_7 +# 544| r544_9(glval) = StringConstant["--user"] : +# 544| r544_10(char *) = Convert : r544_9 +# 544| r544_11(char *) = Convert : r544_10 +# 544| r544_12(int) = Call[strcmp] : func:r544_1, 0:r544_8, 1:r544_11 +# 544| v544_13(void) = ^BufferReadSideEffect[0] : &:r544_8, ~m534_4 +# 544| v544_14(void) = ^BufferReadSideEffect[1] : &:r544_11, ~m435_3 +# 544| r544_15(int) = Constant[0] : +# 544| r544_16(int) = CompareEQ : r544_12, r544_15 +# 544| v544_17(void) = ConditionalBranch : r544_16 +#-----| False -> Block 14 +#-----| True -> Block 15 + +# 544| Block 14 +# 544| r544_18(glval) = FunctionAddress[strcmp] : +# 544| r544_19(glval) = VariableAddress[argv] : +# 544| r544_20(char **) = Load[argv] : &:r544_19, m435_8 +# 544| r544_21(glval) = VariableAddress[n] : +# 544| r544_22(unsigned int) = Load[n] : &:r544_21, m534_9 +# 544| r544_23(glval) = PointerAdd[8] : r544_20, r544_22 +# 544| r544_24(char *) = Load[?] : &:r544_23, ~m435_10 +# 544| r544_25(char *) = Convert : r544_24 +# 544| r544_26(glval) = StringConstant["-u"] : +# 544| r544_27(char *) = Convert : r544_26 +# 544| r544_28(char *) = Convert : r544_27 +# 544| r544_29(int) = Call[strcmp] : func:r544_18, 0:r544_25, 1:r544_28 +# 544| v544_30(void) = ^BufferReadSideEffect[0] : &:r544_25, ~m534_4 +# 544| v544_31(void) = ^BufferReadSideEffect[1] : &:r544_28, ~m435_3 +# 544| r544_32(int) = Constant[0] : +# 544| r544_33(int) = CompareEQ : r544_29, r544_32 +# 544| v544_34(void) = ConditionalBranch : r544_33 +#-----| False -> Block 20 +#-----| True -> Block 15 + +# 546| Block 15 +# 546| r546_1(glval) = VariableAddress[n] : +# 546| r546_2(unsigned int) = Load[n] : &:r546_1, m534_9 +# 546| r546_3(unsigned int) = Constant[1] : +# 546| r546_4(unsigned int) = Add : r546_2, r546_3 +# 546| m546_5(unsigned int) = Store[n] : &:r546_1, r546_4 +# 547| r547_1(glval) = VariableAddress[n] : +# 547| r547_2(unsigned int) = Load[n] : &:r547_1, m546_5 +# 547| r547_3(glval) = VariableAddress[argc] : +# 547| r547_4(int) = Load[argc] : &:r547_3, m435_6 +# 547| r547_5(unsigned int) = Convert : r547_4 +# 547| r547_6(int) = CompareGE : r547_2, r547_5 +# 547| v547_7(void) = ConditionalBranch : r547_6 +#-----| False -> Block 17 +#-----| True -> Block 16 + +# 549| Block 16 +# 549| r549_1(glval) = FunctionAddress[usage] : +# 549| r549_2(glval) = VariableAddress[argc] : +# 549| r549_3(int) = Load[argc] : &:r549_2, m435_6 +# 549| r549_4(glval) = VariableAddress[argv] : +# 549| r549_5(char **) = Load[argv] : &:r549_4, m435_8 +# 549| v549_6(void) = Call[usage] : func:r549_1, 0:r549_3, 1:r549_5 +# 549| m549_7(unknown) = ^CallSideEffect : ~m534_4 +# 549| m549_8(unknown) = Chi : total:m534_4, partial:m549_7 +# 549| v549_9(void) = ^BufferReadSideEffect[1] : &:r549_5, ~m435_10 +# 549| m549_10(unknown) = ^BufferMayWriteSideEffect[1] : &:r549_5 +# 549| m549_11(unknown) = Chi : total:m435_10, partial:m549_10 +# 550| v550_1(void) = NoOp : +#-----| Goto -> Block 184 + +# 553| Block 17 +# 553| r553_1(glval) = VariableAddress[opt_user] : +# 553| r553_2(char *) = Load[opt_user] : &:r553_1, m534_5 +# 553| r553_3(char *) = Constant[0] : +# 553| r553_4(int) = CompareNE : r553_2, r553_3 +# 553| v553_5(void) = ConditionalBranch : r553_4 +#-----| False -> Block 19 +#-----| True -> Block 18 + +# 555| Block 18 +# 555| r555_1(glval) = FunctionAddress[g_printerr] : +# 555| r555_2(glval) = StringConstant["--user specified twice\n"] : +# 555| r555_3(char *) = Convert : r555_2 +# 555| r555_4(char *) = Convert : r555_3 +# 555| v555_5(void) = Call[g_printerr] : func:r555_1, 0:r555_4 +# 555| m555_6(unknown) = ^CallSideEffect : ~m534_4 +# 555| m555_7(unknown) = Chi : total:m534_4, partial:m555_6 +# 555| v555_8(void) = ^BufferReadSideEffect[0] : &:r555_4, ~m435_3 +# 556| v556_1(void) = NoOp : +#-----| Goto -> Block 184 + +# 558| Block 19 +# 558| r558_1(glval) = FunctionAddress[g_strdup] : +# 558| r558_2(glval) = VariableAddress[argv] : +# 558| r558_3(char **) = Load[argv] : &:r558_2, m435_8 +# 558| r558_4(glval) = VariableAddress[n] : +# 558| r558_5(unsigned int) = Load[n] : &:r558_4, m546_5 +# 558| r558_6(glval) = PointerAdd[8] : r558_3, r558_5 +# 558| r558_7(char *) = Load[?] : &:r558_6, ~m435_10 +# 558| r558_8(char *) = Convert : r558_7 +# 558| r558_9(char *) = Call[g_strdup] : func:r558_1, 0:r558_8 +# 558| m558_10(unknown) = ^CallSideEffect : ~m534_4 +# 558| m558_11(unknown) = Chi : total:m534_4, partial:m558_10 +# 558| v558_12(void) = ^BufferReadSideEffect[0] : &:r558_8, ~m558_11 +# 558| r558_13(glval) = VariableAddress[opt_user] : +# 558| m558_14(char *) = Store[opt_user] : &:r558_13, r558_9 +#-----| Goto -> Block 8 + +# 560| Block 20 +# 560| r560_1(glval) = FunctionAddress[strcmp] : +# 560| r560_2(glval) = VariableAddress[argv] : +# 560| r560_3(char **) = Load[argv] : &:r560_2, m435_8 +# 560| r560_4(glval) = VariableAddress[n] : +# 560| r560_5(unsigned int) = Load[n] : &:r560_4, m534_9 +# 560| r560_6(glval) = PointerAdd[8] : r560_3, r560_5 +# 560| r560_7(char *) = Load[?] : &:r560_6, ~m435_10 +# 560| r560_8(char *) = Convert : r560_7 +# 560| r560_9(glval) = StringConstant["--disable-internal-agent"] : +# 560| r560_10(char *) = Convert : r560_9 +# 560| r560_11(char *) = Convert : r560_10 +# 560| r560_12(int) = Call[strcmp] : func:r560_1, 0:r560_8, 1:r560_11 +# 560| v560_13(void) = ^BufferReadSideEffect[0] : &:r560_8, ~m534_4 +# 560| v560_14(void) = ^BufferReadSideEffect[1] : &:r560_11, ~m435_3 +# 560| r560_15(int) = Constant[0] : +# 560| r560_16(int) = CompareEQ : r560_12, r560_15 +# 560| v560_17(void) = ConditionalBranch : r560_16 +#-----| False -> Block 22 +#-----| True -> Block 21 + +# 562| Block 21 +# 562| r562_1(int) = Constant[1] : +# 562| r562_2(glval) = VariableAddress[opt_disable_internal_agent] : +# 562| m562_3(int) = Store[opt_disable_internal_agent] : &:r562_2, r562_1 +#-----| Goto -> Block 8 + +# 566| Block 22 +# 566| v566_1(void) = NoOp : +#-----| Goto -> Block 23 + +# 568| Block 23 +# 568| v568_1(void) = NoOp : +# 570| r570_1(glval) = VariableAddress[opt_show_help] : +# 570| r570_2(int) = Load[opt_show_help] : &:r570_1, m534_7 +# 570| v570_3(void) = ConditionalBranch : r570_2 +#-----| False -> Block 25 +#-----| True -> Block 24 + +# 572| Block 24 +# 572| r572_1(glval) = FunctionAddress[usage] : +# 572| r572_2(glval) = VariableAddress[argc] : +# 572| r572_3(int) = Load[argc] : &:r572_2, m435_6 +# 572| r572_4(glval) = VariableAddress[argv] : +# 572| r572_5(char **) = Load[argv] : &:r572_4, m435_8 +# 572| v572_6(void) = Call[usage] : func:r572_1, 0:r572_3, 1:r572_5 +# 572| m572_7(unknown) = ^CallSideEffect : ~m534_4 +# 572| m572_8(unknown) = Chi : total:m534_4, partial:m572_7 +# 572| v572_9(void) = ^BufferReadSideEffect[1] : &:r572_5, ~m435_10 +# 572| m572_10(unknown) = ^BufferMayWriteSideEffect[1] : &:r572_5 +# 572| m572_11(unknown) = Chi : total:m435_10, partial:m572_10 +# 573| r573_1(unsigned int) = Constant[0] : +# 573| r573_2(glval) = VariableAddress[ret] : +# 573| m573_3(unsigned int) = Store[ret] : &:r573_2, r573_1 +# 574| v574_1(void) = NoOp : +#-----| Goto -> Block 184 + +# 576| Block 25 +# 576| r576_1(glval) = VariableAddress[opt_show_version] : +# 576| r576_2(int) = Load[opt_show_version] : &:r576_1, m534_6 +# 576| v576_3(void) = ConditionalBranch : r576_2 +#-----| False -> Block 27 +#-----| True -> Block 26 + +# 578| Block 26 +# 578| r578_1(glval) = FunctionAddress[g_print] : +# 578| r578_2(glval) = StringConstant["pkexec version %s\n"] : +# 578| r578_3(char *) = Convert : r578_2 +# 578| r578_4(char *) = Convert : r578_3 +# 578| r578_5(glval) = StringConstant[PACKAGE_VERSION] : +# 578| r578_6(char *) = Convert : r578_5 +# 578| v578_7(void) = Call[g_print] : func:r578_1, 0:r578_4, 1:r578_6 +# 578| m578_8(unknown) = ^CallSideEffect : ~m534_4 +# 578| m578_9(unknown) = Chi : total:m534_4, partial:m578_8 +# 578| v578_10(void) = ^BufferReadSideEffect[0] : &:r578_4, ~m435_3 +# 578| v578_11(void) = ^BufferReadSideEffect[1] : &:r578_6, ~m435_3 +# 578| m578_12(unknown) = ^BufferMayWriteSideEffect[1] : &:r578_6 +# 578| m578_13(unknown) = Chi : total:m578_9, partial:m578_12 +# 579| r579_1(unsigned int) = Constant[0] : +# 579| r579_2(glval) = VariableAddress[ret] : +# 579| m579_3(unsigned int) = Store[ret] : &:r579_2, r579_1 +# 580| v580_1(void) = NoOp : +#-----| Goto -> Block 184 + +# 583| Block 27 +# 583| r583_1(glval) = VariableAddress[opt_user] : +# 583| r583_2(char *) = Load[opt_user] : &:r583_1, m534_5 +# 583| r583_3(char *) = Constant[0] : +# 583| r583_4(int) = CompareEQ : r583_2, r583_3 +# 583| v583_5(void) = ConditionalBranch : r583_4 +#-----| False -> Block 29 +#-----| True -> Block 28 + +# 584| Block 28 +# 584| r584_1(glval) = FunctionAddress[g_strdup] : +# 584| r584_2(glval) = StringConstant["root"] : +# 584| r584_3(char *) = Convert : r584_2 +# 584| r584_4(char *) = Convert : r584_3 +# 584| r584_5(char *) = Call[g_strdup] : func:r584_1, 0:r584_4 +# 584| m584_6(unknown) = ^CallSideEffect : ~m534_4 +# 584| m584_7(unknown) = Chi : total:m534_4, partial:m584_6 +# 584| v584_8(void) = ^BufferReadSideEffect[0] : &:r584_4, ~m435_3 +# 584| r584_9(glval) = VariableAddress[opt_user] : +# 584| m584_10(char *) = Store[opt_user] : &:r584_9, r584_5 +#-----| Goto -> Block 29 + +# 589| Block 29 +# 589| m589_1(unknown) = Phi : from 27:~m534_4, from 28:~m584_7 +# 589| m589_2(char *) = Phi : from 27:m534_5, from 28:m584_10 +# 589| r589_3(glval) = FunctionAddress[getpwnam_r] : +# 589| r589_4(glval) = VariableAddress[opt_user] : +# 589| r589_5(char *) = Load[opt_user] : &:r589_4, m589_2 +# 589| r589_6(char *) = Convert : r589_5 +# 589| r589_7(glval) = VariableAddress[pwstruct] : +# 589| r589_8(passwd *) = CopyValue : r589_7 +# 589| r589_9(glval) = VariableAddress[pwbuf] : +# 589| r589_10(char *) = Convert : r589_9 +# 589| r589_11(unsigned long) = Constant[8192] : +# 589| r589_12(glval) = VariableAddress[pw] : +# 589| r589_13(passwd **) = CopyValue : r589_12 +# 589| r589_14(int) = Call[getpwnam_r] : func:r589_3, 0:r589_6, 1:r589_8, 2:r589_10, 3:r589_11, 4:r589_13 +# 589| m589_15(unknown) = ^CallSideEffect : ~m589_1 +# 589| m589_16(unknown) = Chi : total:m589_1, partial:m589_15 +# 589| v589_17(void) = ^BufferReadSideEffect[0] : &:r589_6, ~m589_16 +# 589| v589_18(void) = ^BufferReadSideEffect[1] : &:r589_8, ~m452_2 +# 589| v589_19(void) = ^BufferReadSideEffect[2] : &:r589_10, ~m453_2 +# 589| v589_20(void) = ^BufferReadSideEffect[4] : &:r589_13, ~m589_16 +# 589| m589_21(unknown) = ^BufferMayWriteSideEffect[0] : &:r589_6 +# 589| m589_22(unknown) = Chi : total:m589_16, partial:m589_21 +# 589| m589_23(unknown) = ^BufferMayWriteSideEffect[1] : &:r589_8 +# 589| m589_24(passwd) = Chi : total:m452_2, partial:m589_23 +# 589| m589_25(unknown) = ^BufferMayWriteSideEffect[2] : &:r589_10 +# 589| m589_26(char[8192]) = Chi : total:m453_2, partial:m589_25 +# 589| m589_27(unknown) = ^BufferMayWriteSideEffect[4] : &:r589_13 +# 589| m589_28(unknown) = Chi : total:m589_22, partial:m589_27 +# 589| r589_29(glval) = VariableAddress[rc] : +# 589| m589_30(int) = Store[rc] : &:r589_29, r589_14 +# 590| r590_1(glval) = VariableAddress[rc] : +# 590| r590_2(int) = Load[rc] : &:r590_1, m589_30 +# 590| r590_3(int) = Constant[0] : +# 590| r590_4(int) = CompareEQ : r590_2, r590_3 +# 590| v590_5(void) = ConditionalBranch : r590_4 +#-----| False -> Block 32 +#-----| True -> Block 30 + +# 590| Block 30 +# 590| r590_6(glval) = VariableAddress[pw] : +# 590| r590_7(passwd *) = Load[pw] : &:r590_6, ~m589_28 +# 590| r590_8(passwd *) = Constant[0] : +# 590| r590_9(int) = CompareEQ : r590_7, r590_8 +# 590| v590_10(void) = ConditionalBranch : r590_9 +#-----| False -> Block 32 +#-----| True -> Block 31 + +# 592| Block 31 +# 592| r592_1(glval) = FunctionAddress[g_printerr] : +# 592| r592_2(glval) = StringConstant["User `%s' does not exist.\n"] : +# 592| r592_3(char *) = Convert : r592_2 +# 592| r592_4(char *) = Convert : r592_3 +# 592| r592_5(glval) = VariableAddress[opt_user] : +# 592| r592_6(char *) = Load[opt_user] : &:r592_5, m589_2 +# 592| v592_7(void) = Call[g_printerr] : func:r592_1, 0:r592_4, 1:r592_6 +# 592| m592_8(unknown) = ^CallSideEffect : ~m589_28 +# 592| m592_9(unknown) = Chi : total:m589_28, partial:m592_8 +# 592| v592_10(void) = ^BufferReadSideEffect[0] : &:r592_4, ~m435_3 +# 592| v592_11(void) = ^BufferReadSideEffect[1] : &:r592_6, ~m592_9 +# 592| m592_12(unknown) = ^BufferMayWriteSideEffect[1] : &:r592_6 +# 592| m592_13(unknown) = Chi : total:m592_9, partial:m592_12 +# 593| v593_1(void) = NoOp : +#-----| Goto -> Block 184 + +# 595| Block 32 +# 595| r595_1(glval) = VariableAddress[pw] : +# 595| r595_2(passwd *) = Load[pw] : &:r595_1, ~m589_28 +# 595| r595_3(passwd *) = Constant[0] : +# 595| r595_4(int) = CompareEQ : r595_2, r595_3 +# 595| v595_5(void) = ConditionalBranch : r595_4 +#-----| False -> Block 35 +#-----| True -> Block 33 + +# 597| Block 33 +# 597| r597_1(glval) = FunctionAddress[g_printerr] : +# 597| r597_2(glval) = StringConstant["Error getting information for user `%s': %s\n"] : +# 597| r597_3(char *) = Convert : r597_2 +# 597| r597_4(char *) = Convert : r597_3 +# 597| r597_5(glval) = VariableAddress[opt_user] : +# 597| r597_6(char *) = Load[opt_user] : &:r597_5, m589_2 +# 597| r597_7(glval) = FunctionAddress[g_strerror] : +# 597| r597_8(glval) = VariableAddress[rc] : +# 597| r597_9(int) = Load[rc] : &:r597_8, m589_30 +# 597| r597_10(char *) = Call[g_strerror] : func:r597_7, 0:r597_9 +# 597| m597_11(unknown) = ^CallSideEffect : ~m589_28 +# 597| m597_12(unknown) = Chi : total:m589_28, partial:m597_11 +# 597| v597_13(void) = Call[g_printerr] : func:r597_1, 0:r597_4, 1:r597_6, 2:r597_10 +# 597| m597_14(unknown) = ^CallSideEffect : ~m597_12 +# 597| m597_15(unknown) = Chi : total:m597_12, partial:m597_14 +# 597| v597_16(void) = ^BufferReadSideEffect[0] : &:r597_4, ~m435_3 +# 597| v597_17(void) = ^BufferReadSideEffect[1] : &:r597_6, ~m597_15 +# 597| v597_18(void) = ^BufferReadSideEffect[2] : &:r597_10, ~m597_15 +# 597| m597_19(unknown) = ^BufferMayWriteSideEffect[1] : &:r597_6 +# 597| m597_20(unknown) = Chi : total:m597_15, partial:m597_19 +# 597| m597_21(unknown) = ^BufferMayWriteSideEffect[2] : &:r597_10 +# 597| m597_22(unknown) = Chi : total:m597_20, partial:m597_21 +# 598| v598_1(void) = NoOp : +#-----| Goto -> Block 184 + +# 609| Block 34 +# 609| m609_1(unknown) = Phi : from 39:~m609_30, from 40:~m609_47 +# 609| r609_2(int) = Constant[0] : +# 609| v609_3(void) = ConditionalBranch : r609_2 +#-----| False -> Block 41 +#-----| True -> Block 197 + +# 609| Block 35 +# 609| r609_4(glval) = FunctionAddress[__builtin_expect] : +# 609| r609_5(glval) = VariableAddress[_g_boolean_var_] : +# 609| m609_6(int) = Uninitialized[_g_boolean_var_] : &:r609_5 +# 609| r609_7(glval) = VariableAddress[argv] : +# 609| r609_8(char **) = Load[argv] : &:r609_7, m435_8 +# 609| r609_9(glval) = VariableAddress[argc] : +# 609| r609_10(int) = Load[argc] : &:r609_9, m435_6 +# 609| r609_11(glval) = PointerAdd[8] : r609_8, r609_10 +# 609| r609_12(char *) = Load[?] : &:r609_11, ~m435_10 +# 609| r609_13(char *) = Constant[0] : +# 609| r609_14(int) = CompareEQ : r609_12, r609_13 +# 609| v609_15(void) = ConditionalBranch : r609_14 +#-----| False -> Block 37 +#-----| True -> Block 36 + +# 609| Block 36 +# 609| r609_16(int) = Constant[1] : +# 609| r609_17(glval) = VariableAddress[_g_boolean_var_] : +# 609| m609_18(int) = Store[_g_boolean_var_] : &:r609_17, r609_16 +#-----| Goto -> Block 38 + +# 609| Block 37 +# 609| r609_19(int) = Constant[0] : +# 609| r609_20(glval) = VariableAddress[_g_boolean_var_] : +# 609| m609_21(int) = Store[_g_boolean_var_] : &:r609_20, r609_19 +#-----| Goto -> Block 38 + +# 609| Block 38 +# 609| m609_22(int) = Phi : from 36:m609_18, from 37:m609_21 +# 609| r609_23(glval) = VariableAddress[_g_boolean_var_] : +# 609| r609_24(int) = Load[_g_boolean_var_] : &:r609_23, m609_22 +# 609| r609_25(int) = CopyValue : r609_24 +# 609| r609_26(long) = Convert : r609_25 +# 609| r609_27(long) = Constant[1] : +# 609| r609_28(long) = Call[__builtin_expect] : func:r609_4, 0:r609_26, 1:r609_27 +# 609| m609_29(unknown) = ^CallSideEffect : ~m589_28 +# 609| m609_30(unknown) = Chi : total:m589_28, partial:m609_29 +# 609| v609_31(void) = ConditionalBranch : r609_28 +#-----| False -> Block 40 +#-----| True -> Block 39 + +# 609| Block 39 +# 609| v609_32(void) = NoOp : +#-----| Goto -> Block 34 + +# 609| Block 40 +# 609| r609_33(glval) = FunctionAddress[g_assertion_message_expr] : +# 609| r609_34(char *) = Constant[0] : +# 609| r609_35(glval) = StringConstant[../src/programs/pkexec.c] : +# 609| r609_36(char *) = Convert : r609_35 +# 609| r609_37(char *) = Convert : r609_36 +# 609| r609_38(int) = Constant[609] : +# 609| r609_39(glval) = VariableAddress : +# 609| r609_40(char *) = Convert : r609_39 +# 609| r609_41(char *) = Convert : r609_40 +# 609| r609_42(glval) = StringConstant[argv[argc] == NULL] : +# 609| r609_43(char *) = Convert : r609_42 +# 609| r609_44(char *) = Convert : r609_43 +# 609| v609_45(void) = Call[g_assertion_message_expr] : func:r609_33, 0:r609_34, 1:r609_37, 2:r609_38, 3:r609_41, 4:r609_44 +# 609| m609_46(unknown) = ^CallSideEffect : ~m609_30 +# 609| m609_47(unknown) = Chi : total:m609_30, partial:m609_46 +# 609| v609_48(void) = ^BufferReadSideEffect[0] : &:r609_34, ~m609_47 +# 609| v609_49(void) = ^BufferReadSideEffect[1] : &:r609_37, ~m435_3 +# 609| v609_50(void) = ^BufferReadSideEffect[3] : &:r609_41, ~m609_47 +# 609| v609_51(void) = ^BufferReadSideEffect[4] : &:r609_44, ~m435_3 +#-----| Goto -> Block 34 + +# 610| Block 41 +# 610| r610_1(glval) = FunctionAddress[g_strdup] : +# 610| r610_2(glval) = VariableAddress[argv] : +# 610| r610_3(char **) = Load[argv] : &:r610_2, m435_8 +# 610| r610_4(glval) = VariableAddress[n] : +# 610| r610_5(unsigned int) = Load[n] : &:r610_4, m534_9 +# 610| r610_6(glval) = PointerAdd[8] : r610_3, r610_5 +# 610| r610_7(char *) = Load[?] : &:r610_6, ~m435_10 +# 610| r610_8(char *) = Convert : r610_7 +# 610| r610_9(char *) = Call[g_strdup] : func:r610_1, 0:r610_8 +# 610| m610_10(unknown) = ^CallSideEffect : ~m609_1 +# 610| m610_11(unknown) = Chi : total:m609_1, partial:m610_10 +# 610| v610_12(void) = ^BufferReadSideEffect[0] : &:r610_8, ~m610_11 +# 610| r610_13(glval) = VariableAddress[path] : +# 610| m610_14(char *) = Store[path] : &:r610_13, r610_9 +# 611| r611_1(glval) = VariableAddress[path] : +# 611| r611_2(char *) = Load[path] : &:r611_1, m610_14 +# 611| r611_3(char *) = Constant[0] : +# 611| r611_4(int) = CompareEQ : r611_2, r611_3 +# 611| v611_5(void) = ConditionalBranch : r611_4 +#-----| False -> Block 45 +#-----| True -> Block 42 + +# 613| Block 42 +# 613| r613_1(glval<_GPtrArray *>) = VariableAddress[shell_argv] : +# 613| m613_2(_GPtrArray *) = Uninitialized[shell_argv] : &:r613_1 +# 615| r615_1(glval) = FunctionAddress[g_strdup] : +# 615| r615_2(glval) = VariableAddress[pwstruct] : +# 615| r615_3(glval) = FieldAddress[pw_shell] : r615_2 +# 615| r615_4(char *) = Load[?] : &:r615_3, ~m589_24 +# 615| r615_5(char *) = Convert : r615_4 +# 615| r615_6(char *) = Call[g_strdup] : func:r615_1, 0:r615_5 +# 615| m615_7(unknown) = ^CallSideEffect : ~m610_11 +# 615| m615_8(unknown) = Chi : total:m610_11, partial:m615_7 +# 615| v615_9(void) = ^BufferReadSideEffect[0] : &:r615_5, ~m615_8 +# 615| r615_10(glval) = VariableAddress[path] : +# 615| m615_11(char *) = Store[path] : &:r615_10, r615_6 +# 616| r616_1(glval) = VariableAddress[path] : +# 616| r616_2(char *) = Load[path] : &:r616_1, m615_11 +# 616| v616_3(void) = ConditionalBranch : r616_2 +#-----| False -> Block 43 +#-----| True -> Block 44 + +# 618| Block 43 +# 618| r618_1(glval) = FunctionAddress[g_printerr] : +# 618| r618_2(glval) = StringConstant["No shell configured or error retrieving pw_shell\n"] : +# 618| r618_3(char *) = Convert : r618_2 +# 618| r618_4(char *) = Convert : r618_3 +# 618| v618_5(void) = Call[g_printerr] : func:r618_1, 0:r618_4 +# 618| m618_6(unknown) = ^CallSideEffect : ~m615_8 +# 618| m618_7(unknown) = Chi : total:m615_8, partial:m618_6 +# 618| v618_8(void) = ^BufferReadSideEffect[0] : &:r618_4, ~m435_3 +# 619| v619_1(void) = NoOp : +#-----| Goto -> Block 184 + +# 623| Block 44 +# 623| r623_1(glval) = FunctionAddress[g_strdup] : +# 623| r623_2(glval) = VariableAddress[path] : +# 623| r623_3(char *) = Load[path] : &:r623_2, m615_11 +# 623| r623_4(char *) = Convert : r623_3 +# 623| r623_5(char *) = Call[g_strdup] : func:r623_1, 0:r623_4 +# 623| m623_6(unknown) = ^CallSideEffect : ~m615_8 +# 623| m623_7(unknown) = Chi : total:m615_8, partial:m623_6 +# 623| v623_8(void) = ^BufferReadSideEffect[0] : &:r623_4, ~m623_7 +# 623| r623_9(glval) = VariableAddress[command_line] : +# 623| m623_10(char *) = Store[command_line] : &:r623_9, r623_5 +# 623| m623_11(unknown) = Chi : total:m623_7, partial:m623_10 +# 624| r624_1(glval) = FunctionAddress[g_ptr_array_new] : +# 624| r624_2(_GPtrArray *) = Call[g_ptr_array_new] : func:r624_1 +# 624| m624_3(unknown) = ^CallSideEffect : ~m623_11 +# 624| m624_4(unknown) = Chi : total:m623_11, partial:m624_3 +# 624| r624_5(glval<_GPtrArray *>) = VariableAddress[shell_argv] : +# 624| m624_6(_GPtrArray *) = Store[shell_argv] : &:r624_5, r624_2 +# 625| r625_1(glval) = FunctionAddress[g_ptr_array_add] : +# 625| r625_2(glval<_GPtrArray *>) = VariableAddress[shell_argv] : +# 625| r625_3(_GPtrArray *) = Load[shell_argv] : &:r625_2, m624_6 +# 625| r625_4(glval) = VariableAddress[path] : +# 625| r625_5(char *) = Load[path] : &:r625_4, m615_11 +# 625| r625_6(void *) = Convert : r625_5 +# 625| v625_7(void) = Call[g_ptr_array_add] : func:r625_1, 0:r625_3, 1:r625_6 +# 625| m625_8(unknown) = ^CallSideEffect : ~m624_4 +# 625| m625_9(unknown) = Chi : total:m624_4, partial:m625_8 +# 625| v625_10(void) = ^BufferReadSideEffect[0] : &:r625_3, ~m625_9 +# 625| v625_11(void) = ^BufferReadSideEffect[1] : &:r625_6, ~m625_9 +# 625| m625_12(unknown) = ^BufferMayWriteSideEffect[0] : &:r625_3 +# 625| m625_13(unknown) = Chi : total:m625_9, partial:m625_12 +# 625| m625_14(unknown) = ^BufferMayWriteSideEffect[1] : &:r625_6 +# 625| m625_15(unknown) = Chi : total:m625_13, partial:m625_14 +# 626| r626_1(glval) = FunctionAddress[g_ptr_array_add] : +# 626| r626_2(glval<_GPtrArray *>) = VariableAddress[shell_argv] : +# 626| r626_3(_GPtrArray *) = Load[shell_argv] : &:r626_2, m624_6 +# 626| r626_4(void *) = Constant[0] : +# 626| v626_5(void) = Call[g_ptr_array_add] : func:r626_1, 0:r626_3, 1:r626_4 +# 626| m626_6(unknown) = ^CallSideEffect : ~m625_15 +# 626| m626_7(unknown) = Chi : total:m625_15, partial:m626_6 +# 626| v626_8(void) = ^BufferReadSideEffect[0] : &:r626_3, ~m626_7 +# 626| v626_9(void) = ^BufferReadSideEffect[1] : &:r626_4, ~m626_7 +# 626| m626_10(unknown) = ^BufferMayWriteSideEffect[0] : &:r626_3 +# 626| m626_11(unknown) = Chi : total:m626_7, partial:m626_10 +# 626| m626_12(unknown) = ^BufferMayWriteSideEffect[1] : &:r626_4 +# 626| m626_13(unknown) = Chi : total:m626_11, partial:m626_12 +# 627| r627_1(glval) = FunctionAddress[g_ptr_array_free] : +# 627| r627_2(glval<_GPtrArray *>) = VariableAddress[shell_argv] : +# 627| r627_3(_GPtrArray *) = Load[shell_argv] : &:r627_2, m624_6 +# 627| r627_4(int) = Constant[0] : +# 627| r627_5(void **) = Call[g_ptr_array_free] : func:r627_1, 0:r627_3, 1:r627_4 +# 627| m627_6(unknown) = ^CallSideEffect : ~m626_13 +# 627| m627_7(unknown) = Chi : total:m626_13, partial:m627_6 +# 627| v627_8(void) = ^BufferReadSideEffect[0] : &:r627_3, ~m627_7 +# 627| m627_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r627_3 +# 627| m627_10(unknown) = Chi : total:m627_7, partial:m627_9 +# 627| r627_11(char **) = Convert : r627_5 +# 627| r627_12(glval) = VariableAddress[exec_argv] : +# 627| m627_13(char **) = Store[exec_argv] : &:r627_12, r627_11 +#-----| Goto -> Block 45 + +# 629| Block 45 +# 629| m629_1(unknown) = Phi : from 41:~m610_11, from 44:~m627_10 +# 629| m629_2(char *) = Phi : from 41:m610_14, from 44:m615_11 +# 629| m629_3(char **) = Phi : from 41:m499_3, from 44:m627_13 +# 629| r629_4(glval) = VariableAddress[path] : +# 629| r629_5(char *) = Load[path] : &:r629_4, m629_2 +# 629| r629_6(int) = Constant[0] : +# 629| r629_7(glval) = PointerAdd[1] : r629_5, r629_6 +# 629| r629_8(char) = Load[?] : &:r629_7, ~m629_1 +# 629| r629_9(int) = Convert : r629_8 +# 629| r629_10(int) = Constant[47] : +# 629| r629_11(int) = CompareNE : r629_9, r629_10 +# 629| v629_12(void) = ConditionalBranch : r629_11 +#-----| False -> Block 49 +#-----| True -> Block 46 + +# 632| Block 46 +# 632| r632_1(glval) = FunctionAddress[g_find_program_in_path] : +# 632| r632_2(glval) = VariableAddress[path] : +# 632| r632_3(char *) = Load[path] : &:r632_2, m629_2 +# 632| r632_4(char *) = Convert : r632_3 +# 632| r632_5(char *) = Call[g_find_program_in_path] : func:r632_1, 0:r632_4 +# 632| m632_6(unknown) = ^CallSideEffect : ~m629_1 +# 632| m632_7(unknown) = Chi : total:m629_1, partial:m632_6 +# 632| v632_8(void) = ^BufferReadSideEffect[0] : &:r632_4, ~m632_7 +# 632| r632_9(glval) = VariableAddress[s] : +# 632| m632_10(char *) = Store[s] : &:r632_9, r632_5 +# 633| r633_1(glval) = VariableAddress[s] : +# 633| r633_2(char *) = Load[s] : &:r633_1, m632_10 +# 633| r633_3(char *) = Constant[0] : +# 633| r633_4(int) = CompareEQ : r633_2, r633_3 +# 633| v633_5(void) = ConditionalBranch : r633_4 +#-----| False -> Block 48 +#-----| True -> Block 47 + +# 635| Block 47 +# 635| r635_1(glval) = FunctionAddress[g_printerr] : +# 635| r635_2(glval) = StringConstant["Cannot run program %s: %s\n"] : +# 635| r635_3(char *) = Convert : r635_2 +# 635| r635_4(char *) = Convert : r635_3 +# 635| r635_5(glval) = VariableAddress[path] : +# 635| r635_6(char *) = Load[path] : &:r635_5, m629_2 +# 635| r635_7(glval) = FunctionAddress[strerror] : +# 635| r635_8(int) = Constant[2] : +# 635| r635_9(char *) = Call[strerror] : func:r635_7, 0:r635_8 +# 635| m635_10(unknown) = ^CallSideEffect : ~m632_7 +# 635| m635_11(unknown) = Chi : total:m632_7, partial:m635_10 +# 635| v635_12(void) = Call[g_printerr] : func:r635_1, 0:r635_4, 1:r635_6, 2:r635_9 +# 635| m635_13(unknown) = ^CallSideEffect : ~m635_11 +# 635| m635_14(unknown) = Chi : total:m635_11, partial:m635_13 +# 635| v635_15(void) = ^BufferReadSideEffect[0] : &:r635_4, ~m435_3 +# 635| v635_16(void) = ^BufferReadSideEffect[1] : &:r635_6, ~m635_14 +# 635| v635_17(void) = ^BufferReadSideEffect[2] : &:r635_9, ~m635_14 +# 635| m635_18(unknown) = ^BufferMayWriteSideEffect[1] : &:r635_6 +# 635| m635_19(unknown) = Chi : total:m635_14, partial:m635_18 +# 635| m635_20(unknown) = ^BufferMayWriteSideEffect[2] : &:r635_9 +# 635| m635_21(unknown) = Chi : total:m635_19, partial:m635_20 +# 636| v636_1(void) = NoOp : +#-----| Goto -> Block 184 + +# 638| Block 48 +# 638| r638_1(glval) = FunctionAddress[g_free] : +# 638| r638_2(glval) = VariableAddress[path] : +# 638| r638_3(char *) = Load[path] : &:r638_2, m629_2 +# 638| r638_4(void *) = Convert : r638_3 +# 638| v638_5(void) = Call[g_free] : func:r638_1, 0:r638_4 +# 638| m638_6(unknown) = ^CallSideEffect : ~m632_7 +# 638| m638_7(unknown) = Chi : total:m632_7, partial:m638_6 +# 638| v638_8(void) = ^BufferReadSideEffect[0] : &:r638_4, ~m638_7 +# 638| m638_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r638_4 +# 638| m638_10(unknown) = Chi : total:m638_7, partial:m638_9 +# 639| r639_1(glval) = VariableAddress[s] : +# 639| r639_2(char *) = Load[s] : &:r639_1, m632_10 +# 639| r639_3(glval) = VariableAddress[path] : +# 639| m639_4(char *) = Store[path] : &:r639_3, r639_2 +# 639| r639_5(char *) = CopyValue : r639_2 +# 639| r639_6(glval) = VariableAddress[argv] : +# 639| r639_7(char **) = Load[argv] : &:r639_6, m435_8 +# 639| r639_8(glval) = VariableAddress[n] : +# 639| r639_9(unsigned int) = Load[n] : &:r639_8, m534_9 +# 639| r639_10(glval) = PointerAdd[8] : r639_7, r639_9 +# 639| m639_11(char *) = Store[?] : &:r639_10, r639_5 +# 639| m639_12(unknown) = Chi : total:m435_10, partial:m639_11 +#-----| Goto -> Block 49 + +# 641| Block 49 +# 641| m641_1(unknown) = Phi : from 45:m435_10, from 48:m639_12 +# 641| m641_2(unknown) = Phi : from 45:~m629_1, from 48:~m638_10 +# 641| m641_3(char *) = Phi : from 45:m629_2, from 48:m639_4 +# 641| r641_4(glval) = FunctionAddress[access] : +# 641| r641_5(glval) = VariableAddress[path] : +# 641| r641_6(char *) = Load[path] : &:r641_5, m641_3 +# 641| r641_7(char *) = Convert : r641_6 +# 641| r641_8(int) = Constant[0] : +# 641| r641_9(int) = Call[access] : func:r641_4, 0:r641_7, 1:r641_8 +# 641| m641_10(unknown) = ^CallSideEffect : ~m641_2 +# 641| m641_11(unknown) = Chi : total:m641_2, partial:m641_10 +# 641| v641_12(void) = ^BufferReadSideEffect[0] : &:r641_7, ~m641_11 +# 641| r641_13(int) = Constant[0] : +# 641| r641_14(int) = CompareNE : r641_9, r641_13 +# 641| v641_15(void) = ConditionalBranch : r641_14 +#-----| False -> Block 51 +#-----| True -> Block 50 + +# 643| Block 50 +# 643| r643_1(glval) = FunctionAddress[g_printerr] : +# 643| r643_2(glval) = StringConstant["Error accessing %s: %s\n"] : +# 643| r643_3(char *) = Convert : r643_2 +# 643| r643_4(char *) = Convert : r643_3 +# 643| r643_5(glval) = VariableAddress[path] : +# 643| r643_6(char *) = Load[path] : &:r643_5, m641_3 +# 643| r643_7(glval) = FunctionAddress[g_strerror] : +# 643| r643_8(glval) = FunctionAddress[__errno_location] : +# 643| r643_9(int *) = Call[__errno_location] : func:r643_8 +# 643| m643_10(unknown) = ^CallSideEffect : ~m641_11 +# 643| m643_11(unknown) = Chi : total:m641_11, partial:m643_10 +# 643| r643_12(int) = Load[?] : &:r643_9, ~m643_11 +# 643| r643_13(char *) = Call[g_strerror] : func:r643_7, 0:r643_12 +# 643| m643_14(unknown) = ^CallSideEffect : ~m643_11 +# 643| m643_15(unknown) = Chi : total:m643_11, partial:m643_14 +# 643| v643_16(void) = Call[g_printerr] : func:r643_1, 0:r643_4, 1:r643_6, 2:r643_13 +# 643| m643_17(unknown) = ^CallSideEffect : ~m643_15 +# 643| m643_18(unknown) = Chi : total:m643_15, partial:m643_17 +# 643| v643_19(void) = ^BufferReadSideEffect[0] : &:r643_4, ~m435_3 +# 643| v643_20(void) = ^BufferReadSideEffect[1] : &:r643_6, ~m643_18 +# 643| v643_21(void) = ^BufferReadSideEffect[2] : &:r643_13, ~m643_18 +# 643| m643_22(unknown) = ^BufferMayWriteSideEffect[1] : &:r643_6 +# 643| m643_23(unknown) = Chi : total:m643_18, partial:m643_22 +# 643| m643_24(unknown) = ^BufferMayWriteSideEffect[2] : &:r643_13 +# 643| m643_25(unknown) = Chi : total:m643_23, partial:m643_24 +# 644| v644_1(void) = NoOp : +#-----| Goto -> Block 184 + +# 647| Block 51 +# 647| r647_1(glval) = VariableAddress[command_line] : +# 647| r647_2(char *) = Load[command_line] : &:r647_1, ~m641_11 +# 647| v647_3(void) = ConditionalBranch : r647_2 +#-----| False -> Block 52 +#-----| True -> Block 53 + +# 651| Block 52 +# 651| r651_1(glval) = FunctionAddress[g_strjoinv] : +# 651| r651_2(glval) = StringConstant[" "] : +# 651| r651_3(char *) = Convert : r651_2 +# 651| r651_4(char *) = Convert : r651_3 +# 651| r651_5(glval) = VariableAddress[argv] : +# 651| r651_6(char **) = Load[argv] : &:r651_5, m435_8 +# 651| r651_7(glval) = VariableAddress[n] : +# 651| r651_8(unsigned int) = Load[n] : &:r651_7, m534_9 +# 651| r651_9(char **) = PointerAdd[8] : r651_6, r651_8 +# 651| r651_10(char *) = Call[g_strjoinv] : func:r651_1, 0:r651_4, 1:r651_9 +# 651| m651_11(unknown) = ^CallSideEffect : ~m641_11 +# 651| m651_12(unknown) = Chi : total:m641_11, partial:m651_11 +# 651| v651_13(void) = ^BufferReadSideEffect[0] : &:r651_4, ~m435_3 +# 651| v651_14(void) = ^BufferReadSideEffect[1] : &:r651_9, ~m641_1 +# 651| m651_15(unknown) = ^BufferMayWriteSideEffect[1] : &:r651_9 +# 651| m651_16(unknown) = Chi : total:m641_1, partial:m651_15 +# 651| r651_17(glval) = VariableAddress[command_line] : +# 651| m651_18(char *) = Store[command_line] : &:r651_17, r651_10 +# 651| m651_19(unknown) = Chi : total:m651_12, partial:m651_18 +# 652| r652_1(glval) = VariableAddress[argv] : +# 652| r652_2(char **) = Load[argv] : &:r652_1, m435_8 +# 652| r652_3(glval) = VariableAddress[n] : +# 652| r652_4(unsigned int) = Load[n] : &:r652_3, m534_9 +# 652| r652_5(char **) = PointerAdd[8] : r652_2, r652_4 +# 652| r652_6(glval) = VariableAddress[exec_argv] : +# 652| m652_7(char **) = Store[exec_argv] : &:r652_6, r652_5 +#-----| Goto -> Block 53 + +# 656| Block 53 +# 656| m656_1(unknown) = Phi : from 51:m641_1, from 52:m651_16 +# 656| m656_2(unknown) = Phi : from 51:~m641_11, from 52:~m651_19 +# 656| m656_3(char **) = Phi : from 51:m629_3, from 52:m652_7 +# 656| r656_4(glval) = FunctionAddress[g_ptr_array_new] : +# 656| r656_5(_GPtrArray *) = Call[g_ptr_array_new] : func:r656_4 +# 656| m656_6(unknown) = ^CallSideEffect : ~m656_2 +# 656| m656_7(unknown) = Chi : total:m656_2, partial:m656_6 +# 656| r656_8(glval<_GPtrArray *>) = VariableAddress[saved_env] : +# 656| m656_9(_GPtrArray *) = Store[saved_env] : &:r656_8, r656_5 +# 657| r657_1(unsigned int) = Constant[0] : +# 657| r657_2(glval) = VariableAddress[n] : +# 657| m657_3(unsigned int) = Store[n] : &:r657_2, r657_1 +#-----| Goto -> Block 54 + +# 657| Block 54 +# 657| m657_4(unknown) = Phi : from 53:~m656_7, from 60:~m657_15 +# 657| m657_5(unsigned int) = Phi : from 53:m657_3, from 60:m657_21 +# 657| r657_6(glval) = VariableAddress[environment_variables_to_save] : +# 657| r657_7(char **) = Convert : r657_6 +# 657| r657_8(glval) = VariableAddress[n] : +# 657| r657_9(unsigned int) = Load[n] : &:r657_8, m657_5 +# 657| r657_10(glval) = PointerAdd[8] : r657_7, r657_9 +# 657| r657_11(char *) = Load[?] : &:r657_10, ~m484_3 +# 657| r657_12(char *) = Constant[0] : +# 657| r657_13(int) = CompareNE : r657_11, r657_12 +# 657| v657_14(void) = ConditionalBranch : r657_13 +#-----| False -> Block 61 +#-----| True -> Block 55 + +# 659| Block 55 +# 659| r659_1(glval) = VariableAddress[key] : +# 659| r659_2(glval) = VariableAddress[environment_variables_to_save] : +# 659| r659_3(char **) = Convert : r659_2 +# 659| r659_4(glval) = VariableAddress[n] : +# 659| r659_5(unsigned int) = Load[n] : &:r659_4, m657_5 +# 659| r659_6(glval) = PointerAdd[8] : r659_3, r659_5 +# 659| r659_7(char *) = Load[?] : &:r659_6, ~m484_3 +# 659| m659_8(char *) = Store[key] : &:r659_1, r659_7 +# 660| r660_1(glval) = VariableAddress[value] : +# 660| m660_2(char *) = Uninitialized[value] : &:r660_1 +# 662| r662_1(glval) = FunctionAddress[g_getenv] : +# 662| r662_2(glval) = VariableAddress[key] : +# 662| r662_3(char *) = Load[key] : &:r662_2, m659_8 +# 662| r662_4(char *) = Call[g_getenv] : func:r662_1, 0:r662_3 +# 662| m662_5(unknown) = ^CallSideEffect : ~m657_4 +# 662| m662_6(unknown) = Chi : total:m657_4, partial:m662_5 +# 662| v662_7(void) = ^BufferReadSideEffect[0] : &:r662_3, ~m662_6 +# 662| r662_8(glval) = VariableAddress[value] : +# 662| m662_9(char *) = Store[value] : &:r662_8, r662_4 +# 663| r663_1(glval) = VariableAddress[value] : +# 663| r663_2(char *) = Load[value] : &:r663_1, m662_9 +# 663| r663_3(char *) = Constant[0] : +# 663| r663_4(int) = CompareEQ : r663_2, r663_3 +# 663| v663_5(void) = ConditionalBranch : r663_4 +#-----| False -> Block 57 +#-----| True -> Block 56 + +# 664| Block 56 +# 664| v664_1(void) = NoOp : +#-----| Goto -> Block 60 + +# 670| Block 57 +# 670| r670_1(glval) = FunctionAddress[validate_environment_variable] : +# 670| r670_2(glval) = VariableAddress[key] : +# 670| r670_3(char *) = Load[key] : &:r670_2, m659_8 +# 670| r670_4(glval) = VariableAddress[value] : +# 670| r670_5(char *) = Load[value] : &:r670_4, m662_9 +# 670| r670_6(int) = Call[validate_environment_variable] : func:r670_1, 0:r670_3, 1:r670_5 +# 670| m670_7(unknown) = ^CallSideEffect : ~m662_6 +# 670| m670_8(unknown) = Chi : total:m662_6, partial:m670_7 +# 670| v670_9(void) = ^BufferReadSideEffect[0] : &:r670_3, ~m670_8 +# 670| v670_10(void) = ^BufferReadSideEffect[1] : &:r670_5, ~m670_8 +# 670| v670_11(void) = ConditionalBranch : r670_6 +#-----| False -> Block 58 +#-----| True -> Block 59 + +# 671| Block 58 +# 671| v671_1(void) = NoOp : +#-----| Goto -> Block 184 + +# 673| Block 59 +# 673| r673_1(glval) = FunctionAddress[g_ptr_array_add] : +# 673| r673_2(glval<_GPtrArray *>) = VariableAddress[saved_env] : +# 673| r673_3(_GPtrArray *) = Load[saved_env] : &:r673_2, m656_9 +# 673| r673_4(glval) = FunctionAddress[g_strdup] : +# 673| r673_5(glval) = VariableAddress[key] : +# 673| r673_6(char *) = Load[key] : &:r673_5, m659_8 +# 673| r673_7(char *) = Call[g_strdup] : func:r673_4, 0:r673_6 +# 673| m673_8(unknown) = ^CallSideEffect : ~m670_8 +# 673| m673_9(unknown) = Chi : total:m670_8, partial:m673_8 +# 673| v673_10(void) = ^BufferReadSideEffect[0] : &:r673_6, ~m673_9 +# 673| r673_11(void *) = Convert : r673_7 +# 673| v673_12(void) = Call[g_ptr_array_add] : func:r673_1, 0:r673_3, 1:r673_11 +# 673| m673_13(unknown) = ^CallSideEffect : ~m673_9 +# 673| m673_14(unknown) = Chi : total:m673_9, partial:m673_13 +# 673| v673_15(void) = ^BufferReadSideEffect[0] : &:r673_3, ~m673_14 +# 673| v673_16(void) = ^BufferReadSideEffect[1] : &:r673_11, ~m673_14 +# 673| m673_17(unknown) = ^BufferMayWriteSideEffect[0] : &:r673_3 +# 673| m673_18(unknown) = Chi : total:m673_14, partial:m673_17 +# 673| m673_19(unknown) = ^BufferMayWriteSideEffect[1] : &:r673_11 +# 673| m673_20(unknown) = Chi : total:m673_18, partial:m673_19 +# 674| r674_1(glval) = FunctionAddress[g_ptr_array_add] : +# 674| r674_2(glval<_GPtrArray *>) = VariableAddress[saved_env] : +# 674| r674_3(_GPtrArray *) = Load[saved_env] : &:r674_2, m656_9 +# 674| r674_4(glval) = FunctionAddress[g_strdup] : +# 674| r674_5(glval) = VariableAddress[value] : +# 674| r674_6(char *) = Load[value] : &:r674_5, m662_9 +# 674| r674_7(char *) = Call[g_strdup] : func:r674_4, 0:r674_6 +# 674| m674_8(unknown) = ^CallSideEffect : ~m673_20 +# 674| m674_9(unknown) = Chi : total:m673_20, partial:m674_8 +# 674| v674_10(void) = ^BufferReadSideEffect[0] : &:r674_6, ~m674_9 +# 674| r674_11(void *) = Convert : r674_7 +# 674| v674_12(void) = Call[g_ptr_array_add] : func:r674_1, 0:r674_3, 1:r674_11 +# 674| m674_13(unknown) = ^CallSideEffect : ~m674_9 +# 674| m674_14(unknown) = Chi : total:m674_9, partial:m674_13 +# 674| v674_15(void) = ^BufferReadSideEffect[0] : &:r674_3, ~m674_14 +# 674| v674_16(void) = ^BufferReadSideEffect[1] : &:r674_11, ~m674_14 +# 674| m674_17(unknown) = ^BufferMayWriteSideEffect[0] : &:r674_3 +# 674| m674_18(unknown) = Chi : total:m674_14, partial:m674_17 +# 674| m674_19(unknown) = ^BufferMayWriteSideEffect[1] : &:r674_11 +# 674| m674_20(unknown) = Chi : total:m674_18, partial:m674_19 +#-----| Goto -> Block 60 + +# 657| Block 60 +# 657| m657_15(unknown) = Phi : from 56:~m662_6, from 59:~m674_20 +# 657| v657_16(void) = NoOp : +# 657| r657_17(glval) = VariableAddress[n] : +# 657| r657_18(unsigned int) = Load[n] : &:r657_17, m657_5 +# 657| r657_19(unsigned int) = Constant[1] : +# 657| r657_20(unsigned int) = Add : r657_18, r657_19 +# 657| m657_21(unsigned int) = Store[n] : &:r657_17, r657_20 +#-----| Goto (back edge) -> Block 54 + +# 681| Block 61 +# 681| r681_1(glval) = FunctionAddress[g_getenv] : +# 681| r681_2(glval) = StringConstant["XAUTHORITY"] : +# 681| r681_3(char *) = Convert : r681_2 +# 681| r681_4(char *) = Convert : r681_3 +# 681| r681_5(char *) = Call[g_getenv] : func:r681_1, 0:r681_4 +# 681| m681_6(unknown) = ^CallSideEffect : ~m657_4 +# 681| m681_7(unknown) = Chi : total:m657_4, partial:m681_6 +# 681| v681_8(void) = ^BufferReadSideEffect[0] : &:r681_4, ~m435_3 +# 681| r681_9(char *) = Constant[0] : +# 681| r681_10(int) = CompareEQ : r681_5, r681_9 +# 681| v681_11(void) = ConditionalBranch : r681_10 +#-----| False -> Block 66 +#-----| True -> Block 62 + +# 683| Block 62 +# 683| r683_1(glval) = VariableAddress[home] : +# 683| m683_2(char *) = Uninitialized[home] : &:r683_1 +# 688| r688_1(glval) = FunctionAddress[g_getenv] : +# 688| r688_2(glval) = StringConstant["HOME"] : +# 688| r688_3(char *) = Convert : r688_2 +# 688| r688_4(char *) = Convert : r688_3 +# 688| r688_5(char *) = Call[g_getenv] : func:r688_1, 0:r688_4 +# 688| m688_6(unknown) = ^CallSideEffect : ~m681_7 +# 688| m688_7(unknown) = Chi : total:m681_7, partial:m688_6 +# 688| v688_8(void) = ^BufferReadSideEffect[0] : &:r688_4, ~m435_3 +# 688| r688_9(glval) = VariableAddress[home] : +# 688| m688_10(char *) = Store[home] : &:r688_9, r688_5 +# 689| r689_1(glval) = VariableAddress[home] : +# 689| r689_2(char *) = Load[home] : &:r689_1, m688_10 +# 689| r689_3(char *) = Constant[0] : +# 689| r689_4(int) = CompareEQ : r689_2, r689_3 +# 689| v689_5(void) = ConditionalBranch : r689_4 +#-----| False -> Block 64 +#-----| True -> Block 63 + +# 690| Block 63 +# 690| r690_1(glval) = FunctionAddress[g_get_home_dir] : +# 690| r690_2(char *) = Call[g_get_home_dir] : func:r690_1 +# 690| m690_3(unknown) = ^CallSideEffect : ~m688_7 +# 690| m690_4(unknown) = Chi : total:m688_7, partial:m690_3 +# 690| r690_5(glval) = VariableAddress[home] : +# 690| m690_6(char *) = Store[home] : &:r690_5, r690_2 +#-----| Goto -> Block 64 + +# 692| Block 64 +# 692| m692_1(unknown) = Phi : from 62:~m688_7, from 63:~m690_4 +# 692| m692_2(char *) = Phi : from 62:m688_10, from 63:m690_6 +# 692| r692_3(glval) = VariableAddress[home] : +# 692| r692_4(char *) = Load[home] : &:r692_3, m692_2 +# 692| r692_5(char *) = Constant[0] : +# 692| r692_6(int) = CompareNE : r692_4, r692_5 +# 692| v692_7(void) = ConditionalBranch : r692_6 +#-----| False -> Block 66 +#-----| True -> Block 65 + +# 694| Block 65 +# 694| r694_1(glval) = FunctionAddress[g_ptr_array_add] : +# 694| r694_2(glval<_GPtrArray *>) = VariableAddress[saved_env] : +# 694| r694_3(_GPtrArray *) = Load[saved_env] : &:r694_2, m656_9 +# 694| r694_4(glval) = FunctionAddress[g_strdup] : +# 694| r694_5(glval) = StringConstant["XAUTHORITY"] : +# 694| r694_6(char *) = Convert : r694_5 +# 694| r694_7(char *) = Convert : r694_6 +# 694| r694_8(char *) = Call[g_strdup] : func:r694_4, 0:r694_7 +# 694| m694_9(unknown) = ^CallSideEffect : ~m692_1 +# 694| m694_10(unknown) = Chi : total:m692_1, partial:m694_9 +# 694| v694_11(void) = ^BufferReadSideEffect[0] : &:r694_7, ~m435_3 +# 694| r694_12(void *) = Convert : r694_8 +# 694| v694_13(void) = Call[g_ptr_array_add] : func:r694_1, 0:r694_3, 1:r694_12 +# 694| m694_14(unknown) = ^CallSideEffect : ~m694_10 +# 694| m694_15(unknown) = Chi : total:m694_10, partial:m694_14 +# 694| v694_16(void) = ^BufferReadSideEffect[0] : &:r694_3, ~m694_15 +# 694| v694_17(void) = ^BufferReadSideEffect[1] : &:r694_12, ~m694_15 +# 694| m694_18(unknown) = ^BufferMayWriteSideEffect[0] : &:r694_3 +# 694| m694_19(unknown) = Chi : total:m694_15, partial:m694_18 +# 694| m694_20(unknown) = ^BufferMayWriteSideEffect[1] : &:r694_12 +# 694| m694_21(unknown) = Chi : total:m694_19, partial:m694_20 +# 695| r695_1(glval) = FunctionAddress[g_ptr_array_add] : +# 695| r695_2(glval<_GPtrArray *>) = VariableAddress[saved_env] : +# 695| r695_3(_GPtrArray *) = Load[saved_env] : &:r695_2, m656_9 +# 695| r695_4(glval) = FunctionAddress[g_build_filename] : +# 695| r695_5(glval) = VariableAddress[home] : +# 695| r695_6(char *) = Load[home] : &:r695_5, m692_2 +# 695| r695_7(glval) = StringConstant[".Xauthority"] : +# 695| r695_8(char *) = Convert : r695_7 +# 695| r695_9(void *) = Constant[0] : +# 695| r695_10(char *) = Call[g_build_filename] : func:r695_4, 0:r695_6, 1:r695_8, 2:r695_9 +# 695| m695_11(unknown) = ^CallSideEffect : ~m694_21 +# 695| m695_12(unknown) = Chi : total:m694_21, partial:m695_11 +# 695| v695_13(void) = ^BufferReadSideEffect[0] : &:r695_6, ~m695_12 +# 695| v695_14(void) = ^BufferReadSideEffect[1] : &:r695_8, ~m435_3 +# 695| v695_15(void) = ^BufferReadSideEffect[2] : &:r695_9, ~m695_12 +# 695| m695_16(unknown) = ^BufferMayWriteSideEffect[1] : &:r695_8 +# 695| m695_17(unknown) = Chi : total:m695_12, partial:m695_16 +# 695| m695_18(unknown) = ^BufferMayWriteSideEffect[2] : &:r695_9 +# 695| m695_19(unknown) = Chi : total:m695_17, partial:m695_18 +# 695| r695_20(void *) = Convert : r695_10 +# 695| v695_21(void) = Call[g_ptr_array_add] : func:r695_1, 0:r695_3, 1:r695_20 +# 695| m695_22(unknown) = ^CallSideEffect : ~m695_19 +# 695| m695_23(unknown) = Chi : total:m695_19, partial:m695_22 +# 695| v695_24(void) = ^BufferReadSideEffect[0] : &:r695_3, ~m695_23 +# 695| v695_25(void) = ^BufferReadSideEffect[1] : &:r695_20, ~m695_23 +# 695| m695_26(unknown) = ^BufferMayWriteSideEffect[0] : &:r695_3 +# 695| m695_27(unknown) = Chi : total:m695_23, partial:m695_26 +# 695| m695_28(unknown) = ^BufferMayWriteSideEffect[1] : &:r695_20 +# 695| m695_29(unknown) = Chi : total:m695_27, partial:m695_28 +#-----| Goto -> Block 66 + +# 702| Block 66 +# 702| m702_1(unknown) = Phi : from 61:~m681_7, from 64:~m692_1, from 65:~m695_29 +# 702| r702_2(glval) = FunctionAddress[clearenv] : +# 702| r702_3(int) = Call[clearenv] : func:r702_2 +# 702| m702_4(unknown) = ^CallSideEffect : ~m702_1 +# 702| m702_5(unknown) = Chi : total:m702_1, partial:m702_4 +# 702| r702_6(int) = Constant[0] : +# 702| r702_7(int) = CompareNE : r702_3, r702_6 +# 702| v702_8(void) = ConditionalBranch : r702_7 +#-----| False -> Block 68 +#-----| True -> Block 67 + +# 704| Block 67 +# 704| r704_1(glval) = FunctionAddress[g_printerr] : +# 704| r704_2(glval) = StringConstant["Error clearing environment: %s\n"] : +# 704| r704_3(char *) = Convert : r704_2 +# 704| r704_4(char *) = Convert : r704_3 +# 704| r704_5(glval) = FunctionAddress[g_strerror] : +# 704| r704_6(glval) = FunctionAddress[__errno_location] : +# 704| r704_7(int *) = Call[__errno_location] : func:r704_6 +# 704| m704_8(unknown) = ^CallSideEffect : ~m702_5 +# 704| m704_9(unknown) = Chi : total:m702_5, partial:m704_8 +# 704| r704_10(int) = Load[?] : &:r704_7, ~m704_9 +# 704| r704_11(char *) = Call[g_strerror] : func:r704_5, 0:r704_10 +# 704| m704_12(unknown) = ^CallSideEffect : ~m704_9 +# 704| m704_13(unknown) = Chi : total:m704_9, partial:m704_12 +# 704| v704_14(void) = Call[g_printerr] : func:r704_1, 0:r704_4, 1:r704_11 +# 704| m704_15(unknown) = ^CallSideEffect : ~m704_13 +# 704| m704_16(unknown) = Chi : total:m704_13, partial:m704_15 +# 704| v704_17(void) = ^BufferReadSideEffect[0] : &:r704_4, ~m435_3 +# 704| v704_18(void) = ^BufferReadSideEffect[1] : &:r704_11, ~m704_16 +# 704| m704_19(unknown) = ^BufferMayWriteSideEffect[1] : &:r704_11 +# 704| m704_20(unknown) = Chi : total:m704_16, partial:m704_19 +# 705| v705_1(void) = NoOp : +#-----| Goto -> Block 184 + +# 710| Block 68 +# 710| r710_1(glval) = FunctionAddress[prctl] : +# 710| r710_2(int) = Constant[1] : +# 710| r710_3(int) = Constant[15] : +# 710| r710_4(int) = Call[prctl] : func:r710_1, 0:r710_2, 1:r710_3 +# 710| m710_5(unknown) = ^CallSideEffect : ~m702_5 +# 710| m710_6(unknown) = Chi : total:m702_5, partial:m710_5 +# 710| r710_7(int) = Constant[0] : +# 710| r710_8(int) = CompareNE : r710_4, r710_7 +# 710| v710_9(void) = ConditionalBranch : r710_8 +#-----| False -> Block 70 +#-----| True -> Block 69 + +# 712| Block 69 +# 712| r712_1(glval) = FunctionAddress[g_printerr] : +# 712| r712_2(glval) = StringConstant["prctl(PR_SET_PDEATHSIG, SIGTERM) failed: %s\n"] : +# 712| r712_3(char *) = Convert : r712_2 +# 712| r712_4(char *) = Convert : r712_3 +# 712| r712_5(glval) = FunctionAddress[g_strerror] : +# 712| r712_6(glval) = FunctionAddress[__errno_location] : +# 712| r712_7(int *) = Call[__errno_location] : func:r712_6 +# 712| m712_8(unknown) = ^CallSideEffect : ~m710_6 +# 712| m712_9(unknown) = Chi : total:m710_6, partial:m712_8 +# 712| r712_10(int) = Load[?] : &:r712_7, ~m712_9 +# 712| r712_11(char *) = Call[g_strerror] : func:r712_5, 0:r712_10 +# 712| m712_12(unknown) = ^CallSideEffect : ~m712_9 +# 712| m712_13(unknown) = Chi : total:m712_9, partial:m712_12 +# 712| v712_14(void) = Call[g_printerr] : func:r712_1, 0:r712_4, 1:r712_11 +# 712| m712_15(unknown) = ^CallSideEffect : ~m712_13 +# 712| m712_16(unknown) = Chi : total:m712_13, partial:m712_15 +# 712| v712_17(void) = ^BufferReadSideEffect[0] : &:r712_4, ~m435_3 +# 712| v712_18(void) = ^BufferReadSideEffect[1] : &:r712_11, ~m712_16 +# 712| m712_19(unknown) = ^BufferMayWriteSideEffect[1] : &:r712_11 +# 712| m712_20(unknown) = Chi : total:m712_16, partial:m712_19 +# 713| v713_1(void) = NoOp : +#-----| Goto -> Block 184 + +# 720| Block 70 +# 720| r720_1(glval) = FunctionAddress[getppid] : +# 720| r720_2(int) = Call[getppid] : func:r720_1 +# 720| m720_3(unknown) = ^CallSideEffect : ~m710_6 +# 720| m720_4(unknown) = Chi : total:m710_6, partial:m720_3 +# 720| r720_5(glval) = VariableAddress[pid_of_caller] : +# 720| m720_6(int) = Store[pid_of_caller] : &:r720_5, r720_2 +# 721| r721_1(glval) = VariableAddress[pid_of_caller] : +# 721| r721_2(int) = Load[pid_of_caller] : &:r721_1, m720_6 +# 721| r721_3(int) = Constant[1] : +# 721| r721_4(int) = CompareEQ : r721_2, r721_3 +# 721| v721_5(void) = ConditionalBranch : r721_4 +#-----| False -> Block 72 +#-----| True -> Block 71 + +# 726| Block 71 +# 726| r726_1(glval) = FunctionAddress[g_printerr] : +# 726| r726_2(glval) = StringConstant["Refusing to render service to dead parents.\n"] : +# 726| r726_3(char *) = Convert : r726_2 +# 726| r726_4(char *) = Convert : r726_3 +# 726| v726_5(void) = Call[g_printerr] : func:r726_1, 0:r726_4 +# 726| m726_6(unknown) = ^CallSideEffect : ~m720_4 +# 726| m726_7(unknown) = Chi : total:m720_4, partial:m726_6 +# 726| v726_8(void) = ^BufferReadSideEffect[0] : &:r726_4, ~m435_3 +# 727| v727_1(void) = NoOp : +#-----| Goto -> Block 184 + +# 743| Block 72 +# 743| r743_1(glval) = FunctionAddress[polkit_unix_process_new_for_owner] : +# 743| r743_2(glval) = VariableAddress[pid_of_caller] : +# 743| r743_3(int) = Load[pid_of_caller] : &:r743_2, m720_6 +# 744| r744_1(unsigned long) = Constant[0] : +# 745| r745_1(glval) = FunctionAddress[getuid] : +# 745| r745_2(unsigned int) = Call[getuid] : func:r745_1 +# 745| m745_3(unknown) = ^CallSideEffect : ~m720_4 +# 745| m745_4(unknown) = Chi : total:m720_4, partial:m745_3 +# 745| r745_5(int) = Convert : r745_2 +# 743| r743_4(_PolkitSubject *) = Call[polkit_unix_process_new_for_owner] : func:r743_1, 0:r743_3, 1:r744_1, 2:r745_5 +# 743| m743_5(unknown) = ^CallSideEffect : ~m745_4 +# 743| m743_6(unknown) = Chi : total:m745_4, partial:m743_5 +# 743| r743_7(glval<_PolkitSubject *>) = VariableAddress[subject] : +# 743| m743_8(_PolkitSubject *) = Store[subject] : &:r743_7, r743_4 +# 747| r747_1(glval) = FunctionAddress[__builtin_expect] : +# 747| r747_2(glval) = VariableAddress[_g_boolean_var_] : +# 747| m747_3(int) = Uninitialized[_g_boolean_var_] : &:r747_2 +# 747| r747_4(glval<_PolkitSubject *>) = VariableAddress[subject] : +# 747| r747_5(_PolkitSubject *) = Load[subject] : &:r747_4, m743_8 +# 747| r747_6(_PolkitSubject *) = Constant[0] : +# 747| r747_7(int) = CompareNE : r747_5, r747_6 +# 747| v747_8(void) = ConditionalBranch : r747_7 +#-----| False -> Block 75 +#-----| True -> Block 74 + +# 747| Block 73 +# 747| m747_9(unknown) = Phi : from 77:~m747_26, from 78:~m747_43 +# 747| r747_10(int) = Constant[0] : +# 747| v747_11(void) = ConditionalBranch : r747_10 +#-----| False -> Block 80 +#-----| True -> Block 197 + +# 747| Block 74 +# 747| r747_12(int) = Constant[1] : +# 747| r747_13(glval) = VariableAddress[_g_boolean_var_] : +# 747| m747_14(int) = Store[_g_boolean_var_] : &:r747_13, r747_12 +#-----| Goto -> Block 76 + +# 747| Block 75 +# 747| r747_15(int) = Constant[0] : +# 747| r747_16(glval) = VariableAddress[_g_boolean_var_] : +# 747| m747_17(int) = Store[_g_boolean_var_] : &:r747_16, r747_15 +#-----| Goto -> Block 76 + +# 747| Block 76 +# 747| m747_18(int) = Phi : from 74:m747_14, from 75:m747_17 +# 747| r747_19(glval) = VariableAddress[_g_boolean_var_] : +# 747| r747_20(int) = Load[_g_boolean_var_] : &:r747_19, m747_18 +# 747| r747_21(int) = CopyValue : r747_20 +# 747| r747_22(long) = Convert : r747_21 +# 747| r747_23(long) = Constant[1] : +# 747| r747_24(long) = Call[__builtin_expect] : func:r747_1, 0:r747_22, 1:r747_23 +# 747| m747_25(unknown) = ^CallSideEffect : ~m743_6 +# 747| m747_26(unknown) = Chi : total:m743_6, partial:m747_25 +# 747| v747_27(void) = ConditionalBranch : r747_24 +#-----| False -> Block 78 +#-----| True -> Block 77 + +# 747| Block 77 +# 747| v747_28(void) = NoOp : +#-----| Goto -> Block 73 + +# 747| Block 78 +# 747| r747_29(glval) = FunctionAddress[g_assertion_message_expr] : +# 747| r747_30(char *) = Constant[0] : +# 747| r747_31(glval) = StringConstant[../src/programs/pkexec.c] : +# 747| r747_32(char *) = Convert : r747_31 +# 747| r747_33(char *) = Convert : r747_32 +# 747| r747_34(int) = Constant[747] : +# 747| r747_35(glval) = VariableAddress : +# 747| r747_36(char *) = Convert : r747_35 +# 747| r747_37(char *) = Convert : r747_36 +# 747| r747_38(glval) = StringConstant[subject != NULL] : +# 747| r747_39(char *) = Convert : r747_38 +# 747| r747_40(char *) = Convert : r747_39 +# 747| v747_41(void) = Call[g_assertion_message_expr] : func:r747_29, 0:r747_30, 1:r747_33, 2:r747_34, 3:r747_37, 4:r747_40 +# 747| m747_42(unknown) = ^CallSideEffect : ~m747_26 +# 747| m747_43(unknown) = Chi : total:m747_26, partial:m747_42 +# 747| v747_44(void) = ^BufferReadSideEffect[0] : &:r747_30, ~m747_43 +# 747| v747_45(void) = ^BufferReadSideEffect[1] : &:r747_33, ~m435_3 +# 747| v747_46(void) = ^BufferReadSideEffect[3] : &:r747_37, ~m747_43 +# 747| v747_47(void) = ^BufferReadSideEffect[4] : &:r747_40, ~m435_3 +#-----| Goto -> Block 73 + +# 748| Block 79 +# 748| m748_1(unknown) = Phi : from 84:~m748_48, from 85:~m748_65 +# 748| r748_2(int) = Constant[0] : +# 748| v748_3(void) = ConditionalBranch : r748_2 +#-----| False -> Block 87 +#-----| True -> Block 197 + +# 748| Block 80 +# 748| r748_4(glval) = FunctionAddress[__builtin_expect] : +# 748| r748_5(glval) = VariableAddress[_g_boolean_var_] : +# 748| m748_6(int) = Uninitialized[_g_boolean_var_] : &:r748_5 +# 748| r748_7(glval) = FunctionAddress[polkit_unix_process_get_pid] : +# 748| r748_8(glval) = FunctionAddress[g_type_check_instance_cast] : +# 748| r748_9(glval<_PolkitSubject *>) = VariableAddress[subject] : +# 748| r748_10(_PolkitSubject *) = Load[subject] : &:r748_9, m743_8 +# 748| r748_11(_GTypeInstance *) = Convert : r748_10 +# 748| r748_12(glval) = FunctionAddress[polkit_unix_process_get_type] : +# 748| r748_13(unsigned long) = Call[polkit_unix_process_get_type] : func:r748_12 +# 748| m748_14(unknown) = ^CallSideEffect : ~m747_9 +# 748| m748_15(unknown) = Chi : total:m747_9, partial:m748_14 +# 748| r748_16(_GTypeInstance *) = Call[g_type_check_instance_cast] : func:r748_8, 0:r748_11, 1:r748_13 +# 748| m748_17(unknown) = ^CallSideEffect : ~m748_15 +# 748| m748_18(unknown) = Chi : total:m748_15, partial:m748_17 +# 748| v748_19(void) = ^BufferReadSideEffect[0] : &:r748_11, ~m748_18 +# 748| m748_20(unknown) = ^BufferMayWriteSideEffect[0] : &:r748_11 +# 748| m748_21(unknown) = Chi : total:m748_18, partial:m748_20 +# 748| r748_22(void *) = Convert : r748_16 +# 748| r748_23(_PolkitUnixProcess *) = Convert : r748_22 +# 748| r748_24(int) = Call[polkit_unix_process_get_pid] : func:r748_7, 0:r748_23 +# 748| m748_25(unknown) = ^CallSideEffect : ~m748_21 +# 748| m748_26(unknown) = Chi : total:m748_21, partial:m748_25 +# 748| v748_27(void) = ^BufferReadSideEffect[0] : &:r748_23, ~m748_26 +# 748| m748_28(unknown) = ^BufferMayWriteSideEffect[0] : &:r748_23 +# 748| m748_29(unknown) = Chi : total:m748_26, partial:m748_28 +# 748| r748_30(glval) = VariableAddress[pid_of_caller] : +# 748| r748_31(int) = Load[pid_of_caller] : &:r748_30, m720_6 +# 748| r748_32(int) = CompareEQ : r748_24, r748_31 +# 748| v748_33(void) = ConditionalBranch : r748_32 +#-----| False -> Block 82 +#-----| True -> Block 81 + +# 748| Block 81 +# 748| r748_34(int) = Constant[1] : +# 748| r748_35(glval) = VariableAddress[_g_boolean_var_] : +# 748| m748_36(int) = Store[_g_boolean_var_] : &:r748_35, r748_34 +#-----| Goto -> Block 83 + +# 748| Block 82 +# 748| r748_37(int) = Constant[0] : +# 748| r748_38(glval) = VariableAddress[_g_boolean_var_] : +# 748| m748_39(int) = Store[_g_boolean_var_] : &:r748_38, r748_37 +#-----| Goto -> Block 83 + +# 748| Block 83 +# 748| m748_40(int) = Phi : from 81:m748_36, from 82:m748_39 +# 748| r748_41(glval) = VariableAddress[_g_boolean_var_] : +# 748| r748_42(int) = Load[_g_boolean_var_] : &:r748_41, m748_40 +# 748| r748_43(int) = CopyValue : r748_42 +# 748| r748_44(long) = Convert : r748_43 +# 748| r748_45(long) = Constant[1] : +# 748| r748_46(long) = Call[__builtin_expect] : func:r748_4, 0:r748_44, 1:r748_45 +# 748| m748_47(unknown) = ^CallSideEffect : ~m748_29 +# 748| m748_48(unknown) = Chi : total:m748_29, partial:m748_47 +# 748| v748_49(void) = ConditionalBranch : r748_46 +#-----| False -> Block 85 +#-----| True -> Block 84 + +# 748| Block 84 +# 748| v748_50(void) = NoOp : +#-----| Goto -> Block 79 + +# 748| Block 85 +# 748| r748_51(glval) = FunctionAddress[g_assertion_message_expr] : +# 748| r748_52(char *) = Constant[0] : +# 748| r748_53(glval) = StringConstant[../src/programs/pkexec.c] : +# 748| r748_54(char *) = Convert : r748_53 +# 748| r748_55(char *) = Convert : r748_54 +# 748| r748_56(int) = Constant[748] : +# 748| r748_57(glval) = VariableAddress : +# 748| r748_58(char *) = Convert : r748_57 +# 748| r748_59(char *) = Convert : r748_58 +# 748| r748_60(glval) = StringConstant[polkit_unix_process_get_pid (POLKIT_UNIX_PROCESS (subject)) == pid_of_caller] : +# 748| r748_61(char *) = Convert : r748_60 +# 748| r748_62(char *) = Convert : r748_61 +# 748| v748_63(void) = Call[g_assertion_message_expr] : func:r748_51, 0:r748_52, 1:r748_55, 2:r748_56, 3:r748_59, 4:r748_62 +# 748| m748_64(unknown) = ^CallSideEffect : ~m748_48 +# 748| m748_65(unknown) = Chi : total:m748_48, partial:m748_64 +# 748| v748_66(void) = ^BufferReadSideEffect[0] : &:r748_52, ~m748_65 +# 748| v748_67(void) = ^BufferReadSideEffect[1] : &:r748_55, ~m435_3 +# 748| v748_68(void) = ^BufferReadSideEffect[3] : &:r748_59, ~m748_65 +# 748| v748_69(void) = ^BufferReadSideEffect[4] : &:r748_62, ~m435_3 +#-----| Goto -> Block 79 + +# 749| Block 86 +# 749| m749_1(unknown) = Phi : from 91:~m749_47, from 92:~m749_64 +# 749| r749_2(int) = Constant[0] : +# 749| v749_3(void) = ConditionalBranch : r749_2 +#-----| False -> Block 94 +#-----| True -> Block 197 + +# 749| Block 87 +# 749| r749_4(glval) = FunctionAddress[__builtin_expect] : +# 749| r749_5(glval) = VariableAddress[_g_boolean_var_] : +# 749| m749_6(int) = Uninitialized[_g_boolean_var_] : &:r749_5 +# 749| r749_7(glval) = FunctionAddress[polkit_unix_process_get_uid] : +# 749| r749_8(glval) = FunctionAddress[g_type_check_instance_cast] : +# 749| r749_9(glval<_PolkitSubject *>) = VariableAddress[subject] : +# 749| r749_10(_PolkitSubject *) = Load[subject] : &:r749_9, m743_8 +# 749| r749_11(_GTypeInstance *) = Convert : r749_10 +# 749| r749_12(glval) = FunctionAddress[polkit_unix_process_get_type] : +# 749| r749_13(unsigned long) = Call[polkit_unix_process_get_type] : func:r749_12 +# 749| m749_14(unknown) = ^CallSideEffect : ~m748_1 +# 749| m749_15(unknown) = Chi : total:m748_1, partial:m749_14 +# 749| r749_16(_GTypeInstance *) = Call[g_type_check_instance_cast] : func:r749_8, 0:r749_11, 1:r749_13 +# 749| m749_17(unknown) = ^CallSideEffect : ~m749_15 +# 749| m749_18(unknown) = Chi : total:m749_15, partial:m749_17 +# 749| v749_19(void) = ^BufferReadSideEffect[0] : &:r749_11, ~m749_18 +# 749| m749_20(unknown) = ^BufferMayWriteSideEffect[0] : &:r749_11 +# 749| m749_21(unknown) = Chi : total:m749_18, partial:m749_20 +# 749| r749_22(void *) = Convert : r749_16 +# 749| r749_23(_PolkitUnixProcess *) = Convert : r749_22 +# 749| r749_24(int) = Call[polkit_unix_process_get_uid] : func:r749_7, 0:r749_23 +# 749| m749_25(unknown) = ^CallSideEffect : ~m749_21 +# 749| m749_26(unknown) = Chi : total:m749_21, partial:m749_25 +# 749| v749_27(void) = ^BufferReadSideEffect[0] : &:r749_23, ~m749_26 +# 749| m749_28(unknown) = ^BufferMayWriteSideEffect[0] : &:r749_23 +# 749| m749_29(unknown) = Chi : total:m749_26, partial:m749_28 +# 749| r749_30(int) = Constant[0] : +# 749| r749_31(int) = CompareGE : r749_24, r749_30 +# 749| v749_32(void) = ConditionalBranch : r749_31 +#-----| False -> Block 89 +#-----| True -> Block 88 + +# 749| Block 88 +# 749| r749_33(int) = Constant[1] : +# 749| r749_34(glval) = VariableAddress[_g_boolean_var_] : +# 749| m749_35(int) = Store[_g_boolean_var_] : &:r749_34, r749_33 +#-----| Goto -> Block 90 + +# 749| Block 89 +# 749| r749_36(int) = Constant[0] : +# 749| r749_37(glval) = VariableAddress[_g_boolean_var_] : +# 749| m749_38(int) = Store[_g_boolean_var_] : &:r749_37, r749_36 +#-----| Goto -> Block 90 + +# 749| Block 90 +# 749| m749_39(int) = Phi : from 88:m749_35, from 89:m749_38 +# 749| r749_40(glval) = VariableAddress[_g_boolean_var_] : +# 749| r749_41(int) = Load[_g_boolean_var_] : &:r749_40, m749_39 +# 749| r749_42(int) = CopyValue : r749_41 +# 749| r749_43(long) = Convert : r749_42 +# 749| r749_44(long) = Constant[1] : +# 749| r749_45(long) = Call[__builtin_expect] : func:r749_4, 0:r749_43, 1:r749_44 +# 749| m749_46(unknown) = ^CallSideEffect : ~m749_29 +# 749| m749_47(unknown) = Chi : total:m749_29, partial:m749_46 +# 749| v749_48(void) = ConditionalBranch : r749_45 +#-----| False -> Block 92 +#-----| True -> Block 91 + +# 749| Block 91 +# 749| v749_49(void) = NoOp : +#-----| Goto -> Block 86 + +# 749| Block 92 +# 749| r749_50(glval) = FunctionAddress[g_assertion_message_expr] : +# 749| r749_51(char *) = Constant[0] : +# 749| r749_52(glval) = StringConstant[../src/programs/pkexec.c] : +# 749| r749_53(char *) = Convert : r749_52 +# 749| r749_54(char *) = Convert : r749_53 +# 749| r749_55(int) = Constant[749] : +# 749| r749_56(glval) = VariableAddress : +# 749| r749_57(char *) = Convert : r749_56 +# 749| r749_58(char *) = Convert : r749_57 +# 749| r749_59(glval) = StringConstant[polkit_unix_process_get_uid (POLKIT_UNIX_PROCESS (subject)) >= 0] : +# 749| r749_60(char *) = Convert : r749_59 +# 749| r749_61(char *) = Convert : r749_60 +# 749| v749_62(void) = Call[g_assertion_message_expr] : func:r749_50, 0:r749_51, 1:r749_54, 2:r749_55, 3:r749_58, 4:r749_61 +# 749| m749_63(unknown) = ^CallSideEffect : ~m749_47 +# 749| m749_64(unknown) = Chi : total:m749_47, partial:m749_63 +# 749| v749_65(void) = ^BufferReadSideEffect[0] : &:r749_51, ~m749_64 +# 749| v749_66(void) = ^BufferReadSideEffect[1] : &:r749_54, ~m435_3 +# 749| v749_67(void) = ^BufferReadSideEffect[3] : &:r749_58, ~m749_64 +# 749| v749_68(void) = ^BufferReadSideEffect[4] : &:r749_61, ~m435_3 +#-----| Goto -> Block 86 + +# 750| Block 93 +# 750| m750_1(unknown) = Phi : from 98:~m750_47, from 99:~m750_64 +# 750| r750_2(int) = Constant[0] : +# 750| v750_3(void) = ConditionalBranch : r750_2 +#-----| False -> Block 100 +#-----| True -> Block 197 + +# 750| Block 94 +# 750| r750_4(glval) = FunctionAddress[__builtin_expect] : +# 750| r750_5(glval) = VariableAddress[_g_boolean_var_] : +# 750| m750_6(int) = Uninitialized[_g_boolean_var_] : &:r750_5 +# 750| r750_7(glval) = FunctionAddress[polkit_unix_process_get_start_time] : +# 750| r750_8(glval) = FunctionAddress[g_type_check_instance_cast] : +# 750| r750_9(glval<_PolkitSubject *>) = VariableAddress[subject] : +# 750| r750_10(_PolkitSubject *) = Load[subject] : &:r750_9, m743_8 +# 750| r750_11(_GTypeInstance *) = Convert : r750_10 +# 750| r750_12(glval) = FunctionAddress[polkit_unix_process_get_type] : +# 750| r750_13(unsigned long) = Call[polkit_unix_process_get_type] : func:r750_12 +# 750| m750_14(unknown) = ^CallSideEffect : ~m749_1 +# 750| m750_15(unknown) = Chi : total:m749_1, partial:m750_14 +# 750| r750_16(_GTypeInstance *) = Call[g_type_check_instance_cast] : func:r750_8, 0:r750_11, 1:r750_13 +# 750| m750_17(unknown) = ^CallSideEffect : ~m750_15 +# 750| m750_18(unknown) = Chi : total:m750_15, partial:m750_17 +# 750| v750_19(void) = ^BufferReadSideEffect[0] : &:r750_11, ~m750_18 +# 750| m750_20(unknown) = ^BufferMayWriteSideEffect[0] : &:r750_11 +# 750| m750_21(unknown) = Chi : total:m750_18, partial:m750_20 +# 750| r750_22(void *) = Convert : r750_16 +# 750| r750_23(_PolkitUnixProcess *) = Convert : r750_22 +# 750| r750_24(unsigned long) = Call[polkit_unix_process_get_start_time] : func:r750_7, 0:r750_23 +# 750| m750_25(unknown) = ^CallSideEffect : ~m750_21 +# 750| m750_26(unknown) = Chi : total:m750_21, partial:m750_25 +# 750| v750_27(void) = ^BufferReadSideEffect[0] : &:r750_23, ~m750_26 +# 750| m750_28(unknown) = ^BufferMayWriteSideEffect[0] : &:r750_23 +# 750| m750_29(unknown) = Chi : total:m750_26, partial:m750_28 +# 750| r750_30(unsigned long) = Constant[0] : +# 750| r750_31(int) = CompareGT : r750_24, r750_30 +# 750| v750_32(void) = ConditionalBranch : r750_31 +#-----| False -> Block 96 +#-----| True -> Block 95 + +# 750| Block 95 +# 750| r750_33(int) = Constant[1] : +# 750| r750_34(glval) = VariableAddress[_g_boolean_var_] : +# 750| m750_35(int) = Store[_g_boolean_var_] : &:r750_34, r750_33 +#-----| Goto -> Block 97 + +# 750| Block 96 +# 750| r750_36(int) = Constant[0] : +# 750| r750_37(glval) = VariableAddress[_g_boolean_var_] : +# 750| m750_38(int) = Store[_g_boolean_var_] : &:r750_37, r750_36 +#-----| Goto -> Block 97 + +# 750| Block 97 +# 750| m750_39(int) = Phi : from 95:m750_35, from 96:m750_38 +# 750| r750_40(glval) = VariableAddress[_g_boolean_var_] : +# 750| r750_41(int) = Load[_g_boolean_var_] : &:r750_40, m750_39 +# 750| r750_42(int) = CopyValue : r750_41 +# 750| r750_43(long) = Convert : r750_42 +# 750| r750_44(long) = Constant[1] : +# 750| r750_45(long) = Call[__builtin_expect] : func:r750_4, 0:r750_43, 1:r750_44 +# 750| m750_46(unknown) = ^CallSideEffect : ~m750_29 +# 750| m750_47(unknown) = Chi : total:m750_29, partial:m750_46 +# 750| v750_48(void) = ConditionalBranch : r750_45 +#-----| False -> Block 99 +#-----| True -> Block 98 + +# 750| Block 98 +# 750| v750_49(void) = NoOp : +#-----| Goto -> Block 93 + +# 750| Block 99 +# 750| r750_50(glval) = FunctionAddress[g_assertion_message_expr] : +# 750| r750_51(char *) = Constant[0] : +# 750| r750_52(glval) = StringConstant[../src/programs/pkexec.c] : +# 750| r750_53(char *) = Convert : r750_52 +# 750| r750_54(char *) = Convert : r750_53 +# 750| r750_55(int) = Constant[750] : +# 750| r750_56(glval) = VariableAddress : +# 750| r750_57(char *) = Convert : r750_56 +# 750| r750_58(char *) = Convert : r750_57 +# 750| r750_59(glval) = StringConstant[polkit_unix_process_get_start_time (POLKIT_UNIX_PROCESS (subject)) > 0] : +# 750| r750_60(char *) = Convert : r750_59 +# 750| r750_61(char *) = Convert : r750_60 +# 750| v750_62(void) = Call[g_assertion_message_expr] : func:r750_50, 0:r750_51, 1:r750_54, 2:r750_55, 3:r750_58, 4:r750_61 +# 750| m750_63(unknown) = ^CallSideEffect : ~m750_47 +# 750| m750_64(unknown) = Chi : total:m750_47, partial:m750_63 +# 750| v750_65(void) = ^BufferReadSideEffect[0] : &:r750_51, ~m750_64 +# 750| v750_66(void) = ^BufferReadSideEffect[1] : &:r750_54, ~m435_3 +# 750| v750_67(void) = ^BufferReadSideEffect[3] : &:r750_58, ~m750_64 +# 750| v750_68(void) = ^BufferReadSideEffect[4] : &:r750_61, ~m435_3 +#-----| Goto -> Block 93 + +# 752| Block 100 +# 752| r752_1(_GError *) = Constant[0] : +# 752| r752_2(glval<_GError *>) = VariableAddress[error] : +# 752| m752_3(_GError *) = Store[error] : &:r752_2, r752_1 +# 753| r753_1(glval) = FunctionAddress[polkit_authority_get_sync] : +# 753| r753_2(_GCancellable *) = Constant[0] : +# 753| r753_3(glval<_GError *>) = VariableAddress[error] : +# 753| r753_4(_GError **) = CopyValue : r753_3 +# 753| r753_5(_PolkitAuthority *) = Call[polkit_authority_get_sync] : func:r753_1, 0:r753_2, 1:r753_4 +# 753| m753_6(unknown) = ^CallSideEffect : ~m750_1 +# 753| m753_7(unknown) = Chi : total:m750_1, partial:m753_6 +# 753| v753_8(void) = ^BufferReadSideEffect[0] : &:r753_2, ~m753_7 +# 753| v753_9(void) = ^BufferReadSideEffect[1] : &:r753_4, ~m752_3 +# 753| m753_10(unknown) = ^BufferMayWriteSideEffect[0] : &:r753_2 +# 753| m753_11(unknown) = Chi : total:m753_7, partial:m753_10 +# 753| m753_12(unknown) = ^BufferMayWriteSideEffect[1] : &:r753_4 +# 753| m753_13(_GError *) = Chi : total:m752_3, partial:m753_12 +# 753| r753_14(glval<_PolkitAuthority *>) = VariableAddress[authority] : +# 753| m753_15(_PolkitAuthority *) = Store[authority] : &:r753_14, r753_5 +# 754| r754_1(glval<_PolkitAuthority *>) = VariableAddress[authority] : +# 754| r754_2(_PolkitAuthority *) = Load[authority] : &:r754_1, m753_15 +# 754| r754_3(_PolkitAuthority *) = Constant[0] : +# 754| r754_4(int) = CompareEQ : r754_2, r754_3 +# 754| v754_5(void) = ConditionalBranch : r754_4 +#-----| False -> Block 103 +#-----| True -> Block 101 + +# 756| Block 101 +# 756| r756_1(glval) = FunctionAddress[g_printerr] : +# 756| r756_2(glval) = StringConstant["Error getting authority: %s\n"] : +# 756| r756_3(char *) = Convert : r756_2 +# 756| r756_4(char *) = Convert : r756_3 +# 756| r756_5(glval<_GError *>) = VariableAddress[error] : +# 756| r756_6(_GError *) = Load[error] : &:r756_5, m753_13 +# 756| r756_7(glval) = FieldAddress[message] : r756_6 +# 756| r756_8(char *) = Load[?] : &:r756_7, ~m753_11 +# 756| v756_9(void) = Call[g_printerr] : func:r756_1, 0:r756_4, 1:r756_8 +# 756| m756_10(unknown) = ^CallSideEffect : ~m753_11 +# 756| m756_11(unknown) = Chi : total:m753_11, partial:m756_10 +# 756| v756_12(void) = ^BufferReadSideEffect[0] : &:r756_4, ~m435_3 +# 756| v756_13(void) = ^BufferReadSideEffect[1] : &:r756_8, ~m756_11 +# 756| m756_14(unknown) = ^BufferMayWriteSideEffect[1] : &:r756_8 +# 756| m756_15(unknown) = Chi : total:m756_11, partial:m756_14 +# 757| r757_1(glval) = FunctionAddress[g_error_free] : +# 757| r757_2(glval<_GError *>) = VariableAddress[error] : +# 757| r757_3(_GError *) = Load[error] : &:r757_2, m753_13 +# 757| v757_4(void) = Call[g_error_free] : func:r757_1, 0:r757_3 +# 757| m757_5(unknown) = ^CallSideEffect : ~m756_15 +# 757| m757_6(unknown) = Chi : total:m756_15, partial:m757_5 +# 757| v757_7(void) = ^BufferReadSideEffect[0] : &:r757_3, ~m757_6 +# 757| m757_8(unknown) = ^BufferMayWriteSideEffect[0] : &:r757_3 +# 757| m757_9(unknown) = Chi : total:m757_6, partial:m757_8 +# 758| v758_1(void) = NoOp : +#-----| Goto -> Block 184 + +# 761| Block 102 +# 761| m761_1(unknown) = Phi : from 107:~m761_26, from 108:~m761_43 +# 761| r761_2(int) = Constant[0] : +# 761| v761_3(void) = ConditionalBranch : r761_2 +#-----| False -> Block 110 +#-----| True -> Block 197 + +# 761| Block 103 +# 761| r761_4(glval) = FunctionAddress[__builtin_expect] : +# 761| r761_5(glval) = VariableAddress[_g_boolean_var_] : +# 761| m761_6(int) = Uninitialized[_g_boolean_var_] : &:r761_5 +# 761| r761_7(glval) = VariableAddress[path] : +# 761| r761_8(char *) = Load[path] : &:r761_7, m641_3 +# 761| r761_9(char *) = Constant[0] : +# 761| r761_10(int) = CompareNE : r761_8, r761_9 +# 761| v761_11(void) = ConditionalBranch : r761_10 +#-----| False -> Block 105 +#-----| True -> Block 104 + +# 761| Block 104 +# 761| r761_12(int) = Constant[1] : +# 761| r761_13(glval) = VariableAddress[_g_boolean_var_] : +# 761| m761_14(int) = Store[_g_boolean_var_] : &:r761_13, r761_12 +#-----| Goto -> Block 106 + +# 761| Block 105 +# 761| r761_15(int) = Constant[0] : +# 761| r761_16(glval) = VariableAddress[_g_boolean_var_] : +# 761| m761_17(int) = Store[_g_boolean_var_] : &:r761_16, r761_15 +#-----| Goto -> Block 106 + +# 761| Block 106 +# 761| m761_18(int) = Phi : from 104:m761_14, from 105:m761_17 +# 761| r761_19(glval) = VariableAddress[_g_boolean_var_] : +# 761| r761_20(int) = Load[_g_boolean_var_] : &:r761_19, m761_18 +# 761| r761_21(int) = CopyValue : r761_20 +# 761| r761_22(long) = Convert : r761_21 +# 761| r761_23(long) = Constant[1] : +# 761| r761_24(long) = Call[__builtin_expect] : func:r761_4, 0:r761_22, 1:r761_23 +# 761| m761_25(unknown) = ^CallSideEffect : ~m753_11 +# 761| m761_26(unknown) = Chi : total:m753_11, partial:m761_25 +# 761| v761_27(void) = ConditionalBranch : r761_24 +#-----| False -> Block 108 +#-----| True -> Block 107 + +# 761| Block 107 +# 761| v761_28(void) = NoOp : +#-----| Goto -> Block 102 + +# 761| Block 108 +# 761| r761_29(glval) = FunctionAddress[g_assertion_message_expr] : +# 761| r761_30(char *) = Constant[0] : +# 761| r761_31(glval) = StringConstant[../src/programs/pkexec.c] : +# 761| r761_32(char *) = Convert : r761_31 +# 761| r761_33(char *) = Convert : r761_32 +# 761| r761_34(int) = Constant[761] : +# 761| r761_35(glval) = VariableAddress : +# 761| r761_36(char *) = Convert : r761_35 +# 761| r761_37(char *) = Convert : r761_36 +# 761| r761_38(glval) = StringConstant[path != NULL] : +# 761| r761_39(char *) = Convert : r761_38 +# 761| r761_40(char *) = Convert : r761_39 +# 761| v761_41(void) = Call[g_assertion_message_expr] : func:r761_29, 0:r761_30, 1:r761_33, 2:r761_34, 3:r761_37, 4:r761_40 +# 761| m761_42(unknown) = ^CallSideEffect : ~m761_26 +# 761| m761_43(unknown) = Chi : total:m761_26, partial:m761_42 +# 761| v761_44(void) = ^BufferReadSideEffect[0] : &:r761_30, ~m761_43 +# 761| v761_45(void) = ^BufferReadSideEffect[1] : &:r761_33, ~m435_3 +# 761| v761_46(void) = ^BufferReadSideEffect[3] : &:r761_37, ~m761_43 +# 761| v761_47(void) = ^BufferReadSideEffect[4] : &:r761_40, ~m435_3 +#-----| Goto -> Block 102 + +# 762| Block 109 +# 762| m762_1(unknown) = Phi : from 114:~m762_26, from 115:~m762_43 +# 762| r762_2(int) = Constant[0] : +# 762| v762_3(void) = ConditionalBranch : r762_2 +#-----| False -> Block 116 +#-----| True -> Block 197 + +# 762| Block 110 +# 762| r762_4(glval) = FunctionAddress[__builtin_expect] : +# 762| r762_5(glval) = VariableAddress[_g_boolean_var_] : +# 762| m762_6(int) = Uninitialized[_g_boolean_var_] : &:r762_5 +# 762| r762_7(glval) = VariableAddress[exec_argv] : +# 762| r762_8(char **) = Load[exec_argv] : &:r762_7, m656_3 +# 762| r762_9(char **) = Constant[0] : +# 762| r762_10(int) = CompareNE : r762_8, r762_9 +# 762| v762_11(void) = ConditionalBranch : r762_10 +#-----| False -> Block 112 +#-----| True -> Block 111 + +# 762| Block 111 +# 762| r762_12(int) = Constant[1] : +# 762| r762_13(glval) = VariableAddress[_g_boolean_var_] : +# 762| m762_14(int) = Store[_g_boolean_var_] : &:r762_13, r762_12 +#-----| Goto -> Block 113 + +# 762| Block 112 +# 762| r762_15(int) = Constant[0] : +# 762| r762_16(glval) = VariableAddress[_g_boolean_var_] : +# 762| m762_17(int) = Store[_g_boolean_var_] : &:r762_16, r762_15 +#-----| Goto -> Block 113 + +# 762| Block 113 +# 762| m762_18(int) = Phi : from 111:m762_14, from 112:m762_17 +# 762| r762_19(glval) = VariableAddress[_g_boolean_var_] : +# 762| r762_20(int) = Load[_g_boolean_var_] : &:r762_19, m762_18 +# 762| r762_21(int) = CopyValue : r762_20 +# 762| r762_22(long) = Convert : r762_21 +# 762| r762_23(long) = Constant[1] : +# 762| r762_24(long) = Call[__builtin_expect] : func:r762_4, 0:r762_22, 1:r762_23 +# 762| m762_25(unknown) = ^CallSideEffect : ~m761_1 +# 762| m762_26(unknown) = Chi : total:m761_1, partial:m762_25 +# 762| v762_27(void) = ConditionalBranch : r762_24 +#-----| False -> Block 115 +#-----| True -> Block 114 + +# 762| Block 114 +# 762| v762_28(void) = NoOp : +#-----| Goto -> Block 109 + +# 762| Block 115 +# 762| r762_29(glval) = FunctionAddress[g_assertion_message_expr] : +# 762| r762_30(char *) = Constant[0] : +# 762| r762_31(glval) = StringConstant[../src/programs/pkexec.c] : +# 762| r762_32(char *) = Convert : r762_31 +# 762| r762_33(char *) = Convert : r762_32 +# 762| r762_34(int) = Constant[762] : +# 762| r762_35(glval) = VariableAddress : +# 762| r762_36(char *) = Convert : r762_35 +# 762| r762_37(char *) = Convert : r762_36 +# 762| r762_38(glval) = StringConstant[exec_argv != NULL] : +# 762| r762_39(char *) = Convert : r762_38 +# 762| r762_40(char *) = Convert : r762_39 +# 762| v762_41(void) = Call[g_assertion_message_expr] : func:r762_29, 0:r762_30, 1:r762_33, 2:r762_34, 3:r762_37, 4:r762_40 +# 762| m762_42(unknown) = ^CallSideEffect : ~m762_26 +# 762| m762_43(unknown) = Chi : total:m762_26, partial:m762_42 +# 762| v762_44(void) = ^BufferReadSideEffect[0] : &:r762_30, ~m762_43 +# 762| v762_45(void) = ^BufferReadSideEffect[1] : &:r762_33, ~m435_3 +# 762| v762_46(void) = ^BufferReadSideEffect[3] : &:r762_37, ~m762_43 +# 762| v762_47(void) = ^BufferReadSideEffect[4] : &:r762_40, ~m435_3 +#-----| Goto -> Block 109 + +# 763| Block 116 +# 763| r763_1(glval) = FunctionAddress[find_action_for_path] : +# 763| r763_2(glval<_PolkitAuthority *>) = VariableAddress[authority] : +# 763| r763_3(_PolkitAuthority *) = Load[authority] : &:r763_2, m753_15 +# 764| r764_1(glval) = VariableAddress[path] : +# 764| r764_2(char *) = Load[path] : &:r764_1, m641_3 +# 764| r764_3(char *) = Convert : r764_2 +# 765| r765_1(glval) = VariableAddress[exec_argv] : +# 765| r765_2(char **) = Load[exec_argv] : &:r765_1, m656_3 +# 765| r765_3(int) = Constant[1] : +# 765| r765_4(glval) = PointerAdd[8] : r765_2, r765_3 +# 765| r765_5(char *) = Load[?] : &:r765_4, ~m762_1 +# 765| r765_6(char *) = Convert : r765_5 +# 766| r766_1(glval) = VariableAddress[allow_gui] : +# 766| r766_2(int *) = CopyValue : r766_1 +# 763| r763_4(char *) = Call[find_action_for_path] : func:r763_1, 0:r763_3, 1:r764_3, 2:r765_6, 3:r766_2 +# 763| m763_5(unknown) = ^CallSideEffect : ~m762_1 +# 763| m763_6(unknown) = Chi : total:m762_1, partial:m763_5 +# 763| v763_7(void) = ^BufferReadSideEffect[0] : &:r763_3, ~m763_6 +# 764| v764_4(void) = ^BufferReadSideEffect[1] : &:r764_3, ~m763_6 +# 765| v765_7(void) = ^BufferReadSideEffect[2] : &:r765_6, ~m763_6 +# 766| v766_3(void) = ^BufferReadSideEffect[3] : &:r766_2, ~m449_2 +# 763| m763_8(unknown) = ^BufferMayWriteSideEffect[0] : &:r763_3 +# 763| m763_9(unknown) = Chi : total:m763_6, partial:m763_8 +# 766| m766_4(unknown) = ^BufferMayWriteSideEffect[3] : &:r766_2 +# 766| m766_5(int) = Chi : total:m449_2, partial:m766_4 +# 763| r763_10(glval) = VariableAddress[action_id] : +# 763| m763_11(char *) = Store[action_id] : &:r763_10, r763_4 +# 767| r767_1(glval) = FunctionAddress[__builtin_expect] : +# 767| r767_2(glval) = VariableAddress[_g_boolean_var_] : +# 767| m767_3(int) = Uninitialized[_g_boolean_var_] : &:r767_2 +# 767| r767_4(glval) = VariableAddress[action_id] : +# 767| r767_5(char *) = Load[action_id] : &:r767_4, m763_11 +# 767| r767_6(char *) = Constant[0] : +# 767| r767_7(int) = CompareNE : r767_5, r767_6 +# 767| v767_8(void) = ConditionalBranch : r767_7 +#-----| False -> Block 119 +#-----| True -> Block 118 + +# 767| Block 117 +# 767| m767_9(unknown) = Phi : from 121:~m767_26, from 122:~m767_43 +# 767| r767_10(int) = Constant[0] : +# 767| v767_11(void) = ConditionalBranch : r767_10 +#-----| False -> Block 123 +#-----| True -> Block 197 + +# 767| Block 118 +# 767| r767_12(int) = Constant[1] : +# 767| r767_13(glval) = VariableAddress[_g_boolean_var_] : +# 767| m767_14(int) = Store[_g_boolean_var_] : &:r767_13, r767_12 +#-----| Goto -> Block 120 + +# 767| Block 119 +# 767| r767_15(int) = Constant[0] : +# 767| r767_16(glval) = VariableAddress[_g_boolean_var_] : +# 767| m767_17(int) = Store[_g_boolean_var_] : &:r767_16, r767_15 +#-----| Goto -> Block 120 + +# 767| Block 120 +# 767| m767_18(int) = Phi : from 118:m767_14, from 119:m767_17 +# 767| r767_19(glval) = VariableAddress[_g_boolean_var_] : +# 767| r767_20(int) = Load[_g_boolean_var_] : &:r767_19, m767_18 +# 767| r767_21(int) = CopyValue : r767_20 +# 767| r767_22(long) = Convert : r767_21 +# 767| r767_23(long) = Constant[1] : +# 767| r767_24(long) = Call[__builtin_expect] : func:r767_1, 0:r767_22, 1:r767_23 +# 767| m767_25(unknown) = ^CallSideEffect : ~m763_9 +# 767| m767_26(unknown) = Chi : total:m763_9, partial:m767_25 +# 767| v767_27(void) = ConditionalBranch : r767_24 +#-----| False -> Block 122 +#-----| True -> Block 121 + +# 767| Block 121 +# 767| v767_28(void) = NoOp : +#-----| Goto -> Block 117 + +# 767| Block 122 +# 767| r767_29(glval) = FunctionAddress[g_assertion_message_expr] : +# 767| r767_30(char *) = Constant[0] : +# 767| r767_31(glval) = StringConstant[../src/programs/pkexec.c] : +# 767| r767_32(char *) = Convert : r767_31 +# 767| r767_33(char *) = Convert : r767_32 +# 767| r767_34(int) = Constant[767] : +# 767| r767_35(glval) = VariableAddress : +# 767| r767_36(char *) = Convert : r767_35 +# 767| r767_37(char *) = Convert : r767_36 +# 767| r767_38(glval) = StringConstant[action_id != NULL] : +# 767| r767_39(char *) = Convert : r767_38 +# 767| r767_40(char *) = Convert : r767_39 +# 767| v767_41(void) = Call[g_assertion_message_expr] : func:r767_29, 0:r767_30, 1:r767_33, 2:r767_34, 3:r767_37, 4:r767_40 +# 767| m767_42(unknown) = ^CallSideEffect : ~m767_26 +# 767| m767_43(unknown) = Chi : total:m767_26, partial:m767_42 +# 767| v767_44(void) = ^BufferReadSideEffect[0] : &:r767_30, ~m767_43 +# 767| v767_45(void) = ^BufferReadSideEffect[1] : &:r767_33, ~m435_3 +# 767| v767_46(void) = ^BufferReadSideEffect[3] : &:r767_37, ~m767_43 +# 767| v767_47(void) = ^BufferReadSideEffect[4] : &:r767_40, ~m435_3 +#-----| Goto -> Block 117 + +# 769| Block 123 +# 769| r769_1(glval) = FunctionAddress[polkit_details_new] : +# 769| r769_2(_PolkitDetails *) = Call[polkit_details_new] : func:r769_1 +# 769| m769_3(unknown) = ^CallSideEffect : ~m767_9 +# 769| m769_4(unknown) = Chi : total:m767_9, partial:m769_3 +# 769| r769_5(glval<_PolkitDetails *>) = VariableAddress[details] : +# 769| m769_6(_PolkitDetails *) = Store[details] : &:r769_5, r769_2 +# 770| r770_1(glval) = FunctionAddress[polkit_details_insert] : +# 770| r770_2(glval<_PolkitDetails *>) = VariableAddress[details] : +# 770| r770_3(_PolkitDetails *) = Load[details] : &:r770_2, m769_6 +# 770| r770_4(glval) = StringConstant["user"] : +# 770| r770_5(char *) = Convert : r770_4 +# 770| r770_6(char *) = Convert : r770_5 +# 770| r770_7(glval) = VariableAddress[pw] : +# 770| r770_8(passwd *) = Load[pw] : &:r770_7, ~m769_4 +# 770| r770_9(glval) = FieldAddress[pw_name] : r770_8 +# 770| r770_10(char *) = Load[?] : &:r770_9, ~m769_4 +# 770| r770_11(char *) = Convert : r770_10 +# 770| v770_12(void) = Call[polkit_details_insert] : func:r770_1, 0:r770_3, 1:r770_6, 2:r770_11 +# 770| m770_13(unknown) = ^CallSideEffect : ~m769_4 +# 770| m770_14(unknown) = Chi : total:m769_4, partial:m770_13 +# 770| v770_15(void) = ^BufferReadSideEffect[0] : &:r770_3, ~m770_14 +# 770| v770_16(void) = ^BufferReadSideEffect[1] : &:r770_6, ~m435_3 +# 770| v770_17(void) = ^BufferReadSideEffect[2] : &:r770_11, ~m770_14 +# 770| m770_18(unknown) = ^BufferMayWriteSideEffect[0] : &:r770_3 +# 770| m770_19(unknown) = Chi : total:m770_14, partial:m770_18 +# 771| r771_1(glval) = VariableAddress[pw] : +# 771| r771_2(passwd *) = Load[pw] : &:r771_1, ~m770_19 +# 771| r771_3(glval) = FieldAddress[pw_gecos] : r771_2 +# 771| r771_4(char *) = Load[?] : &:r771_3, ~m770_19 +# 771| r771_5(char *) = Constant[0] : +# 771| r771_6(int) = CompareNE : r771_4, r771_5 +# 771| v771_7(void) = ConditionalBranch : r771_6 +#-----| False -> Block 125 +#-----| True -> Block 124 + +# 772| Block 124 +# 772| r772_1(glval) = FunctionAddress[polkit_details_insert] : +# 772| r772_2(glval<_PolkitDetails *>) = VariableAddress[details] : +# 772| r772_3(_PolkitDetails *) = Load[details] : &:r772_2, m769_6 +# 772| r772_4(glval) = StringConstant["user.gecos"] : +# 772| r772_5(char *) = Convert : r772_4 +# 772| r772_6(char *) = Convert : r772_5 +# 772| r772_7(glval) = VariableAddress[pw] : +# 772| r772_8(passwd *) = Load[pw] : &:r772_7, ~m770_19 +# 772| r772_9(glval) = FieldAddress[pw_gecos] : r772_8 +# 772| r772_10(char *) = Load[?] : &:r772_9, ~m770_19 +# 772| r772_11(char *) = Convert : r772_10 +# 772| v772_12(void) = Call[polkit_details_insert] : func:r772_1, 0:r772_3, 1:r772_6, 2:r772_11 +# 772| m772_13(unknown) = ^CallSideEffect : ~m770_19 +# 772| m772_14(unknown) = Chi : total:m770_19, partial:m772_13 +# 772| v772_15(void) = ^BufferReadSideEffect[0] : &:r772_3, ~m772_14 +# 772| v772_16(void) = ^BufferReadSideEffect[1] : &:r772_6, ~m435_3 +# 772| v772_17(void) = ^BufferReadSideEffect[2] : &:r772_11, ~m772_14 +# 772| m772_18(unknown) = ^BufferMayWriteSideEffect[0] : &:r772_3 +# 772| m772_19(unknown) = Chi : total:m772_14, partial:m772_18 +#-----| Goto -> Block 125 + +# 773| Block 125 +# 773| m773_1(unknown) = Phi : from 123:~m770_19, from 124:~m772_19 +# 773| r773_2(glval) = VariableAddress[pw] : +# 773| r773_3(passwd *) = Load[pw] : &:r773_2, ~m773_1 +# 773| r773_4(glval) = FieldAddress[pw_gecos] : r773_3 +# 773| r773_5(char *) = Load[?] : &:r773_4, ~m773_1 +# 773| r773_6(char *) = Constant[0] : +# 773| r773_7(int) = CompareNE : r773_5, r773_6 +# 773| v773_8(void) = ConditionalBranch : r773_7 +#-----| False -> Block 128 +#-----| True -> Block 126 + +# 773| Block 126 +# 773| r773_9(glval) = FunctionAddress[strlen] : +# 773| r773_10(glval) = VariableAddress[pw] : +# 773| r773_11(passwd *) = Load[pw] : &:r773_10, ~m773_1 +# 773| r773_12(glval) = FieldAddress[pw_gecos] : r773_11 +# 773| r773_13(char *) = Load[?] : &:r773_12, ~m773_1 +# 773| r773_14(char *) = Convert : r773_13 +# 773| r773_15(unsigned long) = Call[strlen] : func:r773_9, 0:r773_14 +# 773| v773_16(void) = ^BufferReadSideEffect[0] : &:r773_14, ~m773_1 +# 773| r773_17(unsigned long) = Constant[0] : +# 773| r773_18(int) = CompareGT : r773_15, r773_17 +# 773| v773_19(void) = ConditionalBranch : r773_18 +#-----| False -> Block 128 +#-----| True -> Block 127 + +# 774| Block 127 +# 774| r774_1(glval) = FunctionAddress[g_strdup_printf] : +# 774| r774_2(glval) = StringConstant["%s (%s)"] : +# 774| r774_3(char *) = Convert : r774_2 +# 774| r774_4(char *) = Convert : r774_3 +# 774| r774_5(glval) = VariableAddress[pw] : +# 774| r774_6(passwd *) = Load[pw] : &:r774_5, ~m773_1 +# 774| r774_7(glval) = FieldAddress[pw_gecos] : r774_6 +# 774| r774_8(char *) = Load[?] : &:r774_7, ~m773_1 +# 774| r774_9(glval) = VariableAddress[pw] : +# 774| r774_10(passwd *) = Load[pw] : &:r774_9, ~m773_1 +# 774| r774_11(glval) = FieldAddress[pw_name] : r774_10 +# 774| r774_12(char *) = Load[?] : &:r774_11, ~m773_1 +# 774| r774_13(char *) = Call[g_strdup_printf] : func:r774_1, 0:r774_4, 1:r774_8, 2:r774_12 +# 774| m774_14(unknown) = ^CallSideEffect : ~m773_1 +# 774| m774_15(unknown) = Chi : total:m773_1, partial:m774_14 +# 774| v774_16(void) = ^BufferReadSideEffect[0] : &:r774_4, ~m435_3 +# 774| v774_17(void) = ^BufferReadSideEffect[1] : &:r774_8, ~m774_15 +# 774| v774_18(void) = ^BufferReadSideEffect[2] : &:r774_12, ~m774_15 +# 774| m774_19(unknown) = ^BufferMayWriteSideEffect[1] : &:r774_8 +# 774| m774_20(unknown) = Chi : total:m774_15, partial:m774_19 +# 774| m774_21(unknown) = ^BufferMayWriteSideEffect[2] : &:r774_12 +# 774| m774_22(unknown) = Chi : total:m774_20, partial:m774_21 +# 774| r774_23(glval) = VariableAddress[s] : +# 774| m774_24(char *) = Store[s] : &:r774_23, r774_13 +#-----| Goto -> Block 129 + +# 776| Block 128 +# 776| r776_1(glval) = FunctionAddress[g_strdup_printf] : +# 776| r776_2(glval) = StringConstant["%s"] : +# 776| r776_3(char *) = Convert : r776_2 +# 776| r776_4(char *) = Convert : r776_3 +# 776| r776_5(glval) = VariableAddress[pw] : +# 776| r776_6(passwd *) = Load[pw] : &:r776_5, ~m773_1 +# 776| r776_7(glval) = FieldAddress[pw_name] : r776_6 +# 776| r776_8(char *) = Load[?] : &:r776_7, ~m773_1 +# 776| r776_9(char *) = Call[g_strdup_printf] : func:r776_1, 0:r776_4, 1:r776_8 +# 776| m776_10(unknown) = ^CallSideEffect : ~m773_1 +# 776| m776_11(unknown) = Chi : total:m773_1, partial:m776_10 +# 776| v776_12(void) = ^BufferReadSideEffect[0] : &:r776_4, ~m435_3 +# 776| v776_13(void) = ^BufferReadSideEffect[1] : &:r776_8, ~m776_11 +# 776| m776_14(unknown) = ^BufferMayWriteSideEffect[1] : &:r776_8 +# 776| m776_15(unknown) = Chi : total:m776_11, partial:m776_14 +# 776| r776_16(glval) = VariableAddress[s] : +# 776| m776_17(char *) = Store[s] : &:r776_16, r776_9 +#-----| Goto -> Block 129 + +# 777| Block 129 +# 777| m777_1(unknown) = Phi : from 127:~m774_22, from 128:~m776_15 +# 777| m777_2(char *) = Phi : from 127:m774_24, from 128:m776_17 +# 777| r777_3(glval) = FunctionAddress[polkit_details_insert] : +# 777| r777_4(glval<_PolkitDetails *>) = VariableAddress[details] : +# 777| r777_5(_PolkitDetails *) = Load[details] : &:r777_4, m769_6 +# 777| r777_6(glval) = StringConstant["user.display"] : +# 777| r777_7(char *) = Convert : r777_6 +# 777| r777_8(char *) = Convert : r777_7 +# 777| r777_9(glval) = VariableAddress[s] : +# 777| r777_10(char *) = Load[s] : &:r777_9, m777_2 +# 777| r777_11(char *) = Convert : r777_10 +# 777| v777_12(void) = Call[polkit_details_insert] : func:r777_3, 0:r777_5, 1:r777_8, 2:r777_11 +# 777| m777_13(unknown) = ^CallSideEffect : ~m777_1 +# 777| m777_14(unknown) = Chi : total:m777_1, partial:m777_13 +# 777| v777_15(void) = ^BufferReadSideEffect[0] : &:r777_5, ~m777_14 +# 777| v777_16(void) = ^BufferReadSideEffect[1] : &:r777_8, ~m435_3 +# 777| v777_17(void) = ^BufferReadSideEffect[2] : &:r777_11, ~m777_14 +# 777| m777_18(unknown) = ^BufferMayWriteSideEffect[0] : &:r777_5 +# 777| m777_19(unknown) = Chi : total:m777_14, partial:m777_18 +# 778| r778_1(glval) = FunctionAddress[g_free] : +# 778| r778_2(glval) = VariableAddress[s] : +# 778| r778_3(char *) = Load[s] : &:r778_2, m777_2 +# 778| r778_4(void *) = Convert : r778_3 +# 778| v778_5(void) = Call[g_free] : func:r778_1, 0:r778_4 +# 778| m778_6(unknown) = ^CallSideEffect : ~m777_19 +# 778| m778_7(unknown) = Chi : total:m777_19, partial:m778_6 +# 778| v778_8(void) = ^BufferReadSideEffect[0] : &:r778_4, ~m778_7 +# 778| m778_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r778_4 +# 778| m778_10(unknown) = Chi : total:m778_7, partial:m778_9 +# 779| r779_1(glval) = FunctionAddress[polkit_details_insert] : +# 779| r779_2(glval<_PolkitDetails *>) = VariableAddress[details] : +# 779| r779_3(_PolkitDetails *) = Load[details] : &:r779_2, m769_6 +# 779| r779_4(glval) = StringConstant["program"] : +# 779| r779_5(char *) = Convert : r779_4 +# 779| r779_6(char *) = Convert : r779_5 +# 779| r779_7(glval) = VariableAddress[path] : +# 779| r779_8(char *) = Load[path] : &:r779_7, m641_3 +# 779| r779_9(char *) = Convert : r779_8 +# 779| v779_10(void) = Call[polkit_details_insert] : func:r779_1, 0:r779_3, 1:r779_6, 2:r779_9 +# 779| m779_11(unknown) = ^CallSideEffect : ~m778_10 +# 779| m779_12(unknown) = Chi : total:m778_10, partial:m779_11 +# 779| v779_13(void) = ^BufferReadSideEffect[0] : &:r779_3, ~m779_12 +# 779| v779_14(void) = ^BufferReadSideEffect[1] : &:r779_6, ~m435_3 +# 779| v779_15(void) = ^BufferReadSideEffect[2] : &:r779_9, ~m779_12 +# 779| m779_16(unknown) = ^BufferMayWriteSideEffect[0] : &:r779_3 +# 779| m779_17(unknown) = Chi : total:m779_12, partial:m779_16 +# 780| r780_1(glval) = FunctionAddress[polkit_details_insert] : +# 780| r780_2(glval<_PolkitDetails *>) = VariableAddress[details] : +# 780| r780_3(_PolkitDetails *) = Load[details] : &:r780_2, m769_6 +# 780| r780_4(glval) = StringConstant["command_line"] : +# 780| r780_5(char *) = Convert : r780_4 +# 780| r780_6(char *) = Convert : r780_5 +# 780| r780_7(glval) = VariableAddress[command_line] : +# 780| r780_8(char *) = Load[command_line] : &:r780_7, ~m779_17 +# 780| r780_9(char *) = Convert : r780_8 +# 780| v780_10(void) = Call[polkit_details_insert] : func:r780_1, 0:r780_3, 1:r780_6, 2:r780_9 +# 780| m780_11(unknown) = ^CallSideEffect : ~m779_17 +# 780| m780_12(unknown) = Chi : total:m779_17, partial:m780_11 +# 780| v780_13(void) = ^BufferReadSideEffect[0] : &:r780_3, ~m780_12 +# 780| v780_14(void) = ^BufferReadSideEffect[1] : &:r780_6, ~m435_3 +# 780| v780_15(void) = ^BufferReadSideEffect[2] : &:r780_9, ~m780_12 +# 780| m780_16(unknown) = ^BufferMayWriteSideEffect[0] : &:r780_3 +# 780| m780_17(unknown) = Chi : total:m780_12, partial:m780_16 +# 781| r781_1(glval) = FunctionAddress[g_strcmp0] : +# 781| r781_2(glval) = VariableAddress[action_id] : +# 781| r781_3(char *) = Load[action_id] : &:r781_2, m763_11 +# 781| r781_4(char *) = Convert : r781_3 +# 781| r781_5(glval) = StringConstant["org.freedesktop.policykit.exec"] : +# 781| r781_6(char *) = Convert : r781_5 +# 781| r781_7(char *) = Convert : r781_6 +# 781| r781_8(int) = Call[g_strcmp0] : func:r781_1, 0:r781_4, 1:r781_7 +# 781| m781_9(unknown) = ^CallSideEffect : ~m780_17 +# 781| m781_10(unknown) = Chi : total:m780_17, partial:m781_9 +# 781| v781_11(void) = ^BufferReadSideEffect[0] : &:r781_4, ~m781_10 +# 781| v781_12(void) = ^BufferReadSideEffect[1] : &:r781_7, ~m435_3 +# 781| r781_13(int) = Constant[0] : +# 781| r781_14(int) = CompareEQ : r781_8, r781_13 +# 781| v781_15(void) = ConditionalBranch : r781_14 +#-----| False -> Block 133 +#-----| True -> Block 130 + +# 783| Block 130 +# 783| r783_1(glval) = VariableAddress[pw] : +# 783| r783_2(passwd *) = Load[pw] : &:r783_1, ~m781_10 +# 783| r783_3(glval) = FieldAddress[pw_uid] : r783_2 +# 783| r783_4(unsigned int) = Load[?] : &:r783_3, ~m781_10 +# 783| r783_5(unsigned int) = Constant[0] : +# 783| r783_6(int) = CompareEQ : r783_4, r783_5 +# 783| v783_7(void) = ConditionalBranch : r783_6 +#-----| False -> Block 132 +#-----| True -> Block 131 + +# 785| Block 131 +# 785| r785_1(glval) = FunctionAddress[polkit_details_insert] : +# 785| r785_2(glval<_PolkitDetails *>) = VariableAddress[details] : +# 785| r785_3(_PolkitDetails *) = Load[details] : &:r785_2, m769_6 +# 785| r785_4(glval) = StringConstant["polkit.message"] : +# 785| r785_5(char *) = Convert : r785_4 +# 785| r785_6(char *) = Convert : r785_5 +# 790| r790_1(glval) = Constant[Authentication is needed to run `$(program)' as the super user] : +# 790| r790_2(char *) = Convert : r790_1 +# 790| r790_3(char *) = Convert : r790_2 +# 785| v785_7(void) = Call[polkit_details_insert] : func:r785_1, 0:r785_3, 1:r785_6, 2:r790_3 +# 785| m785_8(unknown) = ^CallSideEffect : ~m781_10 +# 785| m785_9(unknown) = Chi : total:m781_10, partial:m785_8 +# 785| v785_10(void) = ^BufferReadSideEffect[0] : &:r785_3, ~m785_9 +# 785| v785_11(void) = ^BufferReadSideEffect[1] : &:r785_6, ~m435_3 +# 790| v790_4(void) = ^BufferReadSideEffect[2] : &:r790_3, ~m785_9 +# 785| m785_12(unknown) = ^BufferMayWriteSideEffect[0] : &:r785_3 +# 785| m785_13(unknown) = Chi : total:m785_9, partial:m785_12 +#-----| Goto -> Block 133 + +# 794| Block 132 +# 794| r794_1(glval) = FunctionAddress[polkit_details_insert] : +# 794| r794_2(glval<_PolkitDetails *>) = VariableAddress[details] : +# 794| r794_3(_PolkitDetails *) = Load[details] : &:r794_2, m769_6 +# 794| r794_4(glval) = StringConstant["polkit.message"] : +# 794| r794_5(char *) = Convert : r794_4 +# 794| r794_6(char *) = Convert : r794_5 +# 800| r800_1(glval) = Constant[Authentication is needed to run `$(program)' as user $(user.display)] : +# 800| r800_2(char *) = Convert : r800_1 +# 800| r800_3(char *) = Convert : r800_2 +# 794| v794_7(void) = Call[polkit_details_insert] : func:r794_1, 0:r794_3, 1:r794_6, 2:r800_3 +# 794| m794_8(unknown) = ^CallSideEffect : ~m781_10 +# 794| m794_9(unknown) = Chi : total:m781_10, partial:m794_8 +# 794| v794_10(void) = ^BufferReadSideEffect[0] : &:r794_3, ~m794_9 +# 794| v794_11(void) = ^BufferReadSideEffect[1] : &:r794_6, ~m435_3 +# 800| v800_4(void) = ^BufferReadSideEffect[2] : &:r800_3, ~m794_9 +# 794| m794_12(unknown) = ^BufferMayWriteSideEffect[0] : &:r794_3 +# 794| m794_13(unknown) = Chi : total:m794_9, partial:m794_12 +#-----| Goto -> Block 133 + +# 803| Block 133 +# 803| m803_1(unknown) = Phi : from 129:~m781_10, from 131:~m785_13, from 132:~m794_13 +# 803| r803_2(glval) = FunctionAddress[polkit_details_insert] : +# 803| r803_3(glval<_PolkitDetails *>) = VariableAddress[details] : +# 803| r803_4(_PolkitDetails *) = Load[details] : &:r803_3, m769_6 +# 803| r803_5(glval) = StringConstant["polkit.gettext_domain"] : +# 803| r803_6(char *) = Convert : r803_5 +# 803| r803_7(char *) = Convert : r803_6 +# 803| r803_8(glval) = StringConstant[GETTEXT_PACKAGE] : +# 803| r803_9(char *) = Convert : r803_8 +# 803| r803_10(char *) = Convert : r803_9 +# 803| v803_11(void) = Call[polkit_details_insert] : func:r803_2, 0:r803_4, 1:r803_7, 2:r803_10 +# 803| m803_12(unknown) = ^CallSideEffect : ~m803_1 +# 803| m803_13(unknown) = Chi : total:m803_1, partial:m803_12 +# 803| v803_14(void) = ^BufferReadSideEffect[0] : &:r803_4, ~m803_13 +# 803| v803_15(void) = ^BufferReadSideEffect[1] : &:r803_7, ~m435_3 +# 803| v803_16(void) = ^BufferReadSideEffect[2] : &:r803_10, ~m435_3 +# 803| m803_17(unknown) = ^BufferMayWriteSideEffect[0] : &:r803_4 +# 803| m803_18(unknown) = Chi : total:m803_13, partial:m803_17 +#-----| Goto -> Block 134 + +# 805| Block 134 +# 805| m805_1(unknown) = Phi : from 133:~m803_18, from 145:~m853_10 +# 805| m805_2(void *) = Phi : from 133:m502_3, from 145:m840_11 +# 805| v805_3(void) = NoOp : +# 806| r806_1(_GError *) = Constant[0] : +# 806| r806_2(glval<_GError *>) = VariableAddress[error] : +# 806| m806_3(_GError *) = Store[error] : &:r806_2, r806_1 +# 807| r807_1(glval) = FunctionAddress[polkit_authority_check_authorization_sync] : +# 807| r807_2(glval<_PolkitAuthority *>) = VariableAddress[authority] : +# 807| r807_3(_PolkitAuthority *) = Load[authority] : &:r807_2, m753_15 +# 808| r808_1(glval<_PolkitSubject *>) = VariableAddress[subject] : +# 808| r808_2(_PolkitSubject *) = Load[subject] : &:r808_1, m743_8 +# 809| r809_1(glval) = VariableAddress[action_id] : +# 809| r809_2(char *) = Load[action_id] : &:r809_1, m763_11 +# 809| r809_3(char *) = Convert : r809_2 +# 810| r810_1(glval<_PolkitDetails *>) = VariableAddress[details] : +# 810| r810_2(_PolkitDetails *) = Load[details] : &:r810_1, m769_6 +# 811| r811_1((unnamed enum)) = Constant[1] : +# 812| r812_1(_GCancellable *) = Constant[0] : +# 813| r813_1(glval<_GError *>) = VariableAddress[error] : +# 813| r813_2(_GError **) = CopyValue : r813_1 +# 807| r807_4(_PolkitAuthorizationResult *) = Call[polkit_authority_check_authorization_sync] : func:r807_1, 0:r807_3, 1:r808_2, 2:r809_3, 3:r810_2, 4:r811_1, 5:r812_1, 6:r813_2 +# 807| m807_5(unknown) = ^CallSideEffect : ~m805_1 +# 807| m807_6(unknown) = Chi : total:m805_1, partial:m807_5 +# 807| v807_7(void) = ^BufferReadSideEffect[0] : &:r807_3, ~m807_6 +# 808| v808_3(void) = ^BufferReadSideEffect[1] : &:r808_2, ~m807_6 +# 809| v809_4(void) = ^BufferReadSideEffect[2] : &:r809_3, ~m807_6 +# 810| v810_3(void) = ^BufferReadSideEffect[3] : &:r810_2, ~m807_6 +# 812| v812_2(void) = ^BufferReadSideEffect[5] : &:r812_1, ~m807_6 +# 813| v813_3(void) = ^BufferReadSideEffect[6] : &:r813_2, ~m806_3 +# 807| m807_8(unknown) = ^BufferMayWriteSideEffect[0] : &:r807_3 +# 807| m807_9(unknown) = Chi : total:m807_6, partial:m807_8 +# 808| m808_4(unknown) = ^BufferMayWriteSideEffect[1] : &:r808_2 +# 808| m808_5(unknown) = Chi : total:m807_9, partial:m808_4 +# 810| m810_4(unknown) = ^BufferMayWriteSideEffect[3] : &:r810_2 +# 810| m810_5(unknown) = Chi : total:m808_5, partial:m810_4 +# 812| m812_3(unknown) = ^BufferMayWriteSideEffect[5] : &:r812_1 +# 812| m812_4(unknown) = Chi : total:m810_5, partial:m812_3 +# 813| m813_4(unknown) = ^BufferMayWriteSideEffect[6] : &:r813_2 +# 813| m813_5(_GError *) = Chi : total:m806_3, partial:m813_4 +# 807| r807_10(glval<_PolkitAuthorizationResult *>) = VariableAddress[result] : +# 807| m807_11(_PolkitAuthorizationResult *) = Store[result] : &:r807_10, r807_4 +# 814| r814_1(glval<_PolkitAuthorizationResult *>) = VariableAddress[result] : +# 814| r814_2(_PolkitAuthorizationResult *) = Load[result] : &:r814_1, m807_11 +# 814| r814_3(_PolkitAuthorizationResult *) = Constant[0] : +# 814| r814_4(int) = CompareEQ : r814_2, r814_3 +# 814| v814_5(void) = ConditionalBranch : r814_4 +#-----| False -> Block 136 +#-----| True -> Block 135 + +# 816| Block 135 +# 816| r816_1(glval) = FunctionAddress[g_printerr] : +# 816| r816_2(glval) = StringConstant["Error checking for authorization %s: %s\n"] : +# 816| r816_3(char *) = Convert : r816_2 +# 816| r816_4(char *) = Convert : r816_3 +# 817| r817_1(glval) = VariableAddress[action_id] : +# 817| r817_2(char *) = Load[action_id] : &:r817_1, m763_11 +# 818| r818_1(glval<_GError *>) = VariableAddress[error] : +# 818| r818_2(_GError *) = Load[error] : &:r818_1, m813_5 +# 818| r818_3(glval) = FieldAddress[message] : r818_2 +# 818| r818_4(char *) = Load[?] : &:r818_3, ~m812_4 +# 816| v816_5(void) = Call[g_printerr] : func:r816_1, 0:r816_4, 1:r817_2, 2:r818_4 +# 816| m816_6(unknown) = ^CallSideEffect : ~m812_4 +# 816| m816_7(unknown) = Chi : total:m812_4, partial:m816_6 +# 816| v816_8(void) = ^BufferReadSideEffect[0] : &:r816_4, ~m435_3 +# 817| v817_3(void) = ^BufferReadSideEffect[1] : &:r817_2, ~m816_7 +# 818| v818_5(void) = ^BufferReadSideEffect[2] : &:r818_4, ~m816_7 +# 817| m817_4(unknown) = ^BufferMayWriteSideEffect[1] : &:r817_2 +# 817| m817_5(unknown) = Chi : total:m816_7, partial:m817_4 +# 818| m818_6(unknown) = ^BufferMayWriteSideEffect[2] : &:r818_4 +# 818| m818_7(unknown) = Chi : total:m817_5, partial:m818_6 +# 819| v819_1(void) = NoOp : +#-----| Goto -> Block 184 + +# 822| Block 136 +# 822| r822_1(glval) = FunctionAddress[polkit_authorization_result_get_is_authorized] : +# 822| r822_2(glval<_PolkitAuthorizationResult *>) = VariableAddress[result] : +# 822| r822_3(_PolkitAuthorizationResult *) = Load[result] : &:r822_2, m807_11 +# 822| r822_4(int) = Call[polkit_authorization_result_get_is_authorized] : func:r822_1, 0:r822_3 +# 822| m822_5(unknown) = ^CallSideEffect : ~m812_4 +# 822| m822_6(unknown) = Chi : total:m812_4, partial:m822_5 +# 822| v822_7(void) = ^BufferReadSideEffect[0] : &:r822_3, ~m822_6 +# 822| m822_8(unknown) = ^BufferMayWriteSideEffect[0] : &:r822_3 +# 822| m822_9(unknown) = Chi : total:m822_6, partial:m822_8 +# 822| v822_10(void) = ConditionalBranch : r822_4 +#-----| False -> Block 138 +#-----| True -> Block 137 + +# 823| Block 137 +# 823| v823_1(void) = NoOp : +# 882| r882_1(glval) = FunctionAddress[g_ptr_array_add] : +# 882| r882_2(glval<_GPtrArray *>) = VariableAddress[saved_env] : +# 882| r882_3(_GPtrArray *) = Load[saved_env] : &:r882_2, m656_9 +# 882| r882_4(glval) = FunctionAddress[g_strdup] : +# 882| r882_5(glval) = StringConstant["PATH"] : +# 882| r882_6(char *) = Convert : r882_5 +# 882| r882_7(char *) = Convert : r882_6 +# 882| r882_8(char *) = Call[g_strdup] : func:r882_4, 0:r882_7 +# 882| m882_9(unknown) = ^CallSideEffect : ~m822_9 +# 882| m882_10(unknown) = Chi : total:m822_9, partial:m882_9 +# 882| v882_11(void) = ^BufferReadSideEffect[0] : &:r882_7, ~m435_3 +# 882| r882_12(void *) = Convert : r882_8 +# 882| v882_13(void) = Call[g_ptr_array_add] : func:r882_1, 0:r882_3, 1:r882_12 +# 882| m882_14(unknown) = ^CallSideEffect : ~m882_10 +# 882| m882_15(unknown) = Chi : total:m882_10, partial:m882_14 +# 882| v882_16(void) = ^BufferReadSideEffect[0] : &:r882_3, ~m882_15 +# 882| v882_17(void) = ^BufferReadSideEffect[1] : &:r882_12, ~m882_15 +# 882| m882_18(unknown) = ^BufferMayWriteSideEffect[0] : &:r882_3 +# 882| m882_19(unknown) = Chi : total:m882_15, partial:m882_18 +# 882| m882_20(unknown) = ^BufferMayWriteSideEffect[1] : &:r882_12 +# 882| m882_21(unknown) = Chi : total:m882_19, partial:m882_20 +# 883| r883_1(glval) = VariableAddress[pw] : +# 883| r883_2(passwd *) = Load[pw] : &:r883_1, ~m882_21 +# 883| r883_3(glval) = FieldAddress[pw_uid] : r883_2 +# 883| r883_4(unsigned int) = Load[?] : &:r883_3, ~m882_21 +# 883| r883_5(unsigned int) = Constant[0] : +# 883| r883_6(int) = CompareNE : r883_4, r883_5 +# 883| v883_7(void) = ConditionalBranch : r883_6 +#-----| False -> Block 152 +#-----| True -> Block 151 + +# 826| Block 138 +# 826| r826_1(glval) = FunctionAddress[polkit_authorization_result_get_is_challenge] : +# 826| r826_2(glval<_PolkitAuthorizationResult *>) = VariableAddress[result] : +# 826| r826_3(_PolkitAuthorizationResult *) = Load[result] : &:r826_2, m807_11 +# 826| r826_4(int) = Call[polkit_authorization_result_get_is_challenge] : func:r826_1, 0:r826_3 +# 826| m826_5(unknown) = ^CallSideEffect : ~m822_9 +# 826| m826_6(unknown) = Chi : total:m822_9, partial:m826_5 +# 826| v826_7(void) = ^BufferReadSideEffect[0] : &:r826_3, ~m826_6 +# 826| m826_8(unknown) = ^BufferMayWriteSideEffect[0] : &:r826_3 +# 826| m826_9(unknown) = Chi : total:m826_6, partial:m826_8 +# 826| v826_10(void) = ConditionalBranch : r826_4 +#-----| False -> Block 147 +#-----| True -> Block 139 + +# 828| Block 139 +# 828| r828_1(glval) = VariableAddress[local_agent_handle] : +# 828| r828_2(void *) = Load[local_agent_handle] : &:r828_1, m805_2 +# 828| r828_3(void *) = Constant[0] : +# 828| r828_4(int) = CompareEQ : r828_2, r828_3 +# 828| v828_5(void) = ConditionalBranch : r828_4 +#-----| False -> Block 146 +#-----| True -> Block 140 + +# 828| Block 140 +# 828| r828_6(glval) = VariableAddress[opt_disable_internal_agent] : +# 828| r828_7(int) = Load[opt_disable_internal_agent] : &:r828_6, m534_8 +# 828| v828_8(void) = ConditionalBranch : r828_7 +#-----| False -> Block 141 +#-----| True -> Block 146 + +# 830| Block 141 +# 830| r830_1(glval<_PolkitAgentListener *>) = VariableAddress[listener] : +# 830| m830_2(_PolkitAgentListener *) = Uninitialized[listener] : &:r830_1 +# 831| r831_1(_GError *) = Constant[0] : +# 831| r831_2(glval<_GError *>) = VariableAddress[error] : +# 831| m831_3(_GError *) = Store[error] : &:r831_2, r831_1 +# 833| r833_1(glval) = FunctionAddress[polkit_agent_text_listener_new] : +# 833| r833_2(_GCancellable *) = Constant[0] : +# 833| r833_3(glval<_GError *>) = VariableAddress[error] : +# 833| r833_4(_GError **) = CopyValue : r833_3 +# 833| r833_5(_PolkitAgentListener *) = Call[polkit_agent_text_listener_new] : func:r833_1, 0:r833_2, 1:r833_4 +# 833| m833_6(unknown) = ^CallSideEffect : ~m826_9 +# 833| m833_7(unknown) = Chi : total:m826_9, partial:m833_6 +# 833| v833_8(void) = ^BufferReadSideEffect[0] : &:r833_2, ~m833_7 +# 833| v833_9(void) = ^BufferReadSideEffect[1] : &:r833_4, ~m831_3 +# 833| m833_10(unknown) = ^BufferMayWriteSideEffect[0] : &:r833_2 +# 833| m833_11(unknown) = Chi : total:m833_7, partial:m833_10 +# 833| m833_12(unknown) = ^BufferMayWriteSideEffect[1] : &:r833_4 +# 833| m833_13(_GError *) = Chi : total:m831_3, partial:m833_12 +# 833| r833_14(glval<_PolkitAgentListener *>) = VariableAddress[listener] : +# 833| m833_15(_PolkitAgentListener *) = Store[listener] : &:r833_14, r833_5 +# 834| r834_1(glval<_PolkitAgentListener *>) = VariableAddress[listener] : +# 834| r834_2(_PolkitAgentListener *) = Load[listener] : &:r834_1, m833_15 +# 834| r834_3(_PolkitAgentListener *) = Constant[0] : +# 834| r834_4(int) = CompareEQ : r834_2, r834_3 +# 834| v834_5(void) = ConditionalBranch : r834_4 +#-----| False -> Block 143 +#-----| True -> Block 142 + +# 836| Block 142 +# 836| r836_1(glval) = FunctionAddress[g_printerr] : +# 836| r836_2(glval) = StringConstant["Error creating textual authentication agent: %s\n"] : +# 836| r836_3(char *) = Convert : r836_2 +# 836| r836_4(char *) = Convert : r836_3 +# 836| r836_5(glval<_GError *>) = VariableAddress[error] : +# 836| r836_6(_GError *) = Load[error] : &:r836_5, m833_13 +# 836| r836_7(glval) = FieldAddress[message] : r836_6 +# 836| r836_8(char *) = Load[?] : &:r836_7, ~m833_11 +# 836| v836_9(void) = Call[g_printerr] : func:r836_1, 0:r836_4, 1:r836_8 +# 836| m836_10(unknown) = ^CallSideEffect : ~m833_11 +# 836| m836_11(unknown) = Chi : total:m833_11, partial:m836_10 +# 836| v836_12(void) = ^BufferReadSideEffect[0] : &:r836_4, ~m435_3 +# 836| v836_13(void) = ^BufferReadSideEffect[1] : &:r836_8, ~m836_11 +# 836| m836_14(unknown) = ^BufferMayWriteSideEffect[1] : &:r836_8 +# 836| m836_15(unknown) = Chi : total:m836_11, partial:m836_14 +# 837| r837_1(glval) = FunctionAddress[g_error_free] : +# 837| r837_2(glval<_GError *>) = VariableAddress[error] : +# 837| r837_3(_GError *) = Load[error] : &:r837_2, m833_13 +# 837| v837_4(void) = Call[g_error_free] : func:r837_1, 0:r837_3 +# 837| m837_5(unknown) = ^CallSideEffect : ~m836_15 +# 837| m837_6(unknown) = Chi : total:m836_15, partial:m837_5 +# 837| v837_7(void) = ^BufferReadSideEffect[0] : &:r837_3, ~m837_6 +# 837| m837_8(unknown) = ^BufferMayWriteSideEffect[0] : &:r837_3 +# 837| m837_9(unknown) = Chi : total:m837_6, partial:m837_8 +# 838| v838_1(void) = NoOp : +#-----| Goto -> Block 184 + +# 840| Block 143 +# 840| r840_1(glval) = FunctionAddress[polkit_agent_listener_register] : +# 840| r840_2(glval<_PolkitAgentListener *>) = VariableAddress[listener] : +# 840| r840_3(_PolkitAgentListener *) = Load[listener] : &:r840_2, m833_15 +# 841| r841_1((unnamed enum)) = Constant[1] : +# 842| r842_1(glval<_PolkitSubject *>) = VariableAddress[subject] : +# 842| r842_2(_PolkitSubject *) = Load[subject] : &:r842_1, m743_8 +# 843| r843_1(char *) = Constant[0] : +# 844| r844_1(_GCancellable *) = Constant[0] : +# 845| r845_1(glval<_GError *>) = VariableAddress[error] : +# 845| r845_2(_GError **) = CopyValue : r845_1 +# 840| r840_4(void *) = Call[polkit_agent_listener_register] : func:r840_1, 0:r840_3, 1:r841_1, 2:r842_2, 3:r843_1, 4:r844_1, 5:r845_2 +# 840| m840_5(unknown) = ^CallSideEffect : ~m833_11 +# 840| m840_6(unknown) = Chi : total:m833_11, partial:m840_5 +# 840| v840_7(void) = ^BufferReadSideEffect[0] : &:r840_3, ~m840_6 +# 842| v842_3(void) = ^BufferReadSideEffect[2] : &:r842_2, ~m840_6 +# 843| v843_2(void) = ^BufferReadSideEffect[3] : &:r843_1, ~m840_6 +# 844| v844_2(void) = ^BufferReadSideEffect[4] : &:r844_1, ~m840_6 +# 845| v845_3(void) = ^BufferReadSideEffect[5] : &:r845_2, ~m833_13 +# 840| m840_8(unknown) = ^BufferMayWriteSideEffect[0] : &:r840_3 +# 840| m840_9(unknown) = Chi : total:m840_6, partial:m840_8 +# 842| m842_4(unknown) = ^BufferMayWriteSideEffect[2] : &:r842_2 +# 842| m842_5(unknown) = Chi : total:m840_9, partial:m842_4 +# 844| m844_3(unknown) = ^BufferMayWriteSideEffect[4] : &:r844_1 +# 844| m844_4(unknown) = Chi : total:m842_5, partial:m844_3 +# 845| m845_4(unknown) = ^BufferMayWriteSideEffect[5] : &:r845_2 +# 845| m845_5(_GError *) = Chi : total:m833_13, partial:m845_4 +# 840| r840_10(glval) = VariableAddress[local_agent_handle] : +# 840| m840_11(void *) = Store[local_agent_handle] : &:r840_10, r840_4 +# 846| r846_1(glval) = FunctionAddress[g_object_unref] : +# 846| r846_2(glval<_PolkitAgentListener *>) = VariableAddress[listener] : +# 846| r846_3(_PolkitAgentListener *) = Load[listener] : &:r846_2, m833_15 +# 846| r846_4(void *) = Convert : r846_3 +# 846| v846_5(void) = Call[g_object_unref] : func:r846_1, 0:r846_4 +# 846| m846_6(unknown) = ^CallSideEffect : ~m844_4 +# 846| m846_7(unknown) = Chi : total:m844_4, partial:m846_6 +# 846| v846_8(void) = ^BufferReadSideEffect[0] : &:r846_4, ~m846_7 +# 846| m846_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r846_4 +# 846| m846_10(unknown) = Chi : total:m846_7, partial:m846_9 +# 847| r847_1(glval) = VariableAddress[local_agent_handle] : +# 847| r847_2(void *) = Load[local_agent_handle] : &:r847_1, m840_11 +# 847| r847_3(void *) = Constant[0] : +# 847| r847_4(int) = CompareEQ : r847_2, r847_3 +# 847| v847_5(void) = ConditionalBranch : r847_4 +#-----| False -> Block 145 +#-----| True -> Block 144 + +# 849| Block 144 +# 849| r849_1(glval) = FunctionAddress[g_printerr] : +# 849| r849_2(glval) = StringConstant["Error registering local authentication agent: %s\n"] : +# 849| r849_3(char *) = Convert : r849_2 +# 849| r849_4(char *) = Convert : r849_3 +# 849| r849_5(glval<_GError *>) = VariableAddress[error] : +# 849| r849_6(_GError *) = Load[error] : &:r849_5, m845_5 +# 849| r849_7(glval) = FieldAddress[message] : r849_6 +# 849| r849_8(char *) = Load[?] : &:r849_7, ~m846_10 +# 849| v849_9(void) = Call[g_printerr] : func:r849_1, 0:r849_4, 1:r849_8 +# 849| m849_10(unknown) = ^CallSideEffect : ~m846_10 +# 849| m849_11(unknown) = Chi : total:m846_10, partial:m849_10 +# 849| v849_12(void) = ^BufferReadSideEffect[0] : &:r849_4, ~m435_3 +# 849| v849_13(void) = ^BufferReadSideEffect[1] : &:r849_8, ~m849_11 +# 849| m849_14(unknown) = ^BufferMayWriteSideEffect[1] : &:r849_8 +# 849| m849_15(unknown) = Chi : total:m849_11, partial:m849_14 +# 850| r850_1(glval) = FunctionAddress[g_error_free] : +# 850| r850_2(glval<_GError *>) = VariableAddress[error] : +# 850| r850_3(_GError *) = Load[error] : &:r850_2, m845_5 +# 850| v850_4(void) = Call[g_error_free] : func:r850_1, 0:r850_3 +# 850| m850_5(unknown) = ^CallSideEffect : ~m849_15 +# 850| m850_6(unknown) = Chi : total:m849_15, partial:m850_5 +# 850| v850_7(void) = ^BufferReadSideEffect[0] : &:r850_3, ~m850_6 +# 850| m850_8(unknown) = ^BufferMayWriteSideEffect[0] : &:r850_3 +# 850| m850_9(unknown) = Chi : total:m850_6, partial:m850_8 +# 851| v851_1(void) = NoOp : +#-----| Goto -> Block 184 + +# 853| Block 145 +# 853| r853_1(glval) = FunctionAddress[g_object_unref] : +# 853| r853_2(glval<_PolkitAuthorizationResult *>) = VariableAddress[result] : +# 853| r853_3(_PolkitAuthorizationResult *) = Load[result] : &:r853_2, m807_11 +# 853| r853_4(void *) = Convert : r853_3 +# 853| v853_5(void) = Call[g_object_unref] : func:r853_1, 0:r853_4 +# 853| m853_6(unknown) = ^CallSideEffect : ~m846_10 +# 853| m853_7(unknown) = Chi : total:m846_10, partial:m853_6 +# 853| v853_8(void) = ^BufferReadSideEffect[0] : &:r853_4, ~m853_7 +# 853| m853_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r853_4 +# 853| m853_10(unknown) = Chi : total:m853_7, partial:m853_9 +# 854| r854_1(_PolkitAuthorizationResult *) = Constant[0] : +# 854| r854_2(glval<_PolkitAuthorizationResult *>) = VariableAddress[result] : +# 854| m854_3(_PolkitAuthorizationResult *) = Store[result] : &:r854_2, r854_1 +# 855| v855_1(void) = NoOp : +#-----| Goto (back edge) -> Block 134 + +# 859| Block 146 +# 859| r859_1(glval) = FunctionAddress[g_printerr] : +# 859| r859_2(glval) = StringConstant["Error executing command as another user: No authentication agent found.\n"] : +# 859| r859_3(char *) = Convert : r859_2 +# 859| r859_4(char *) = Convert : r859_3 +# 859| v859_5(void) = Call[g_printerr] : func:r859_1, 0:r859_4 +# 859| m859_6(unknown) = ^CallSideEffect : ~m826_9 +# 859| m859_7(unknown) = Chi : total:m826_9, partial:m859_6 +# 859| v859_8(void) = ^BufferReadSideEffect[0] : &:r859_4, ~m435_3 +# 860| v860_1(void) = NoOp : +#-----| Goto -> Block 184 + +# 865| Block 147 +# 865| r865_1(glval) = FunctionAddress[polkit_authorization_result_get_dismissed] : +# 865| r865_2(glval<_PolkitAuthorizationResult *>) = VariableAddress[result] : +# 865| r865_3(_PolkitAuthorizationResult *) = Load[result] : &:r865_2, m807_11 +# 865| r865_4(int) = Call[polkit_authorization_result_get_dismissed] : func:r865_1, 0:r865_3 +# 865| m865_5(unknown) = ^CallSideEffect : ~m826_9 +# 865| m865_6(unknown) = Chi : total:m826_9, partial:m865_5 +# 865| v865_7(void) = ^BufferReadSideEffect[0] : &:r865_3, ~m865_6 +# 865| m865_8(unknown) = ^BufferMayWriteSideEffect[0] : &:r865_3 +# 865| m865_9(unknown) = Chi : total:m865_6, partial:m865_8 +# 865| v865_10(void) = ConditionalBranch : r865_4 +#-----| False -> Block 149 +#-----| True -> Block 148 + +# 867| Block 148 +# 867| r867_1(glval) = FunctionAddress[log_message] : +# 867| r867_2(int) = Constant[4] : +# 867| r867_3(int) = Constant[1] : +# 868| r868_1(glval) = StringConstant["Error executing command as another user: Request dismissed"] : +# 868| r868_2(char *) = Convert : r868_1 +# 868| r868_3(char *) = Convert : r868_2 +# 867| v867_4(void) = Call[log_message] : func:r867_1, 0:r867_2, 1:r867_3, 2:r868_3 +# 867| m867_5(unknown) = ^CallSideEffect : ~m865_9 +# 867| m867_6(unknown) = Chi : total:m865_9, partial:m867_5 +# 868| v868_4(void) = ^BufferReadSideEffect[2] : &:r868_3, ~m435_3 +# 869| r869_1(unsigned int) = Constant[126] : +# 869| r869_2(glval) = VariableAddress[ret] : +# 869| m869_3(unsigned int) = Store[ret] : &:r869_2, r869_1 +#-----| Goto -> Block 150 + +# 873| Block 149 +# 873| r873_1(glval) = FunctionAddress[log_message] : +# 873| r873_2(int) = Constant[4] : +# 873| r873_3(int) = Constant[1] : +# 874| r874_1(glval) = StringConstant["Error executing command as another user: Not authorized"] : +# 874| r874_2(char *) = Convert : r874_1 +# 874| r874_3(char *) = Convert : r874_2 +# 873| v873_4(void) = Call[log_message] : func:r873_1, 0:r873_2, 1:r873_3, 2:r874_3 +# 873| m873_5(unknown) = ^CallSideEffect : ~m865_9 +# 873| m873_6(unknown) = Chi : total:m865_9, partial:m873_5 +# 874| v874_4(void) = ^BufferReadSideEffect[2] : &:r874_3, ~m435_3 +# 875| r875_1(glval) = FunctionAddress[g_printerr] : +# 875| r875_2(glval) = StringConstant["\n" "This incident has been reported.\n"] : +# 875| r875_3(char *) = Convert : r875_2 +# 875| r875_4(char *) = Convert : r875_3 +# 875| v875_5(void) = Call[g_printerr] : func:r875_1, 0:r875_4 +# 875| m875_6(unknown) = ^CallSideEffect : ~m873_6 +# 875| m875_7(unknown) = Chi : total:m873_6, partial:m875_6 +# 875| v875_8(void) = ^BufferReadSideEffect[0] : &:r875_4, ~m435_3 +#-----| Goto -> Block 150 + +# 878| Block 150 +# 878| m878_1(unknown) = Phi : from 148:~m867_6, from 149:~m875_7 +# 878| m878_2(unsigned int) = Phi : from 148:m869_3, from 149:m491_3 +# 878| v878_3(void) = NoOp : +#-----| Goto -> Block 184 + +# 884| Block 151 +# 884| r884_1(glval) = FunctionAddress[g_strdup_printf] : +# 884| r884_2(glval) = StringConstant["/usr/bin:/bin:/usr/sbin:/sbin:%s/bin"] : +# 884| r884_3(char *) = Convert : r884_2 +# 884| r884_4(char *) = Convert : r884_3 +# 884| r884_5(glval) = VariableAddress[pw] : +# 884| r884_6(passwd *) = Load[pw] : &:r884_5, ~m882_21 +# 884| r884_7(glval) = FieldAddress[pw_dir] : r884_6 +# 884| r884_8(char *) = Load[?] : &:r884_7, ~m882_21 +# 884| r884_9(char *) = Call[g_strdup_printf] : func:r884_1, 0:r884_4, 1:r884_8 +# 884| m884_10(unknown) = ^CallSideEffect : ~m882_21 +# 884| m884_11(unknown) = Chi : total:m882_21, partial:m884_10 +# 884| v884_12(void) = ^BufferReadSideEffect[0] : &:r884_4, ~m435_3 +# 884| v884_13(void) = ^BufferReadSideEffect[1] : &:r884_8, ~m884_11 +# 884| m884_14(unknown) = ^BufferMayWriteSideEffect[1] : &:r884_8 +# 884| m884_15(unknown) = Chi : total:m884_11, partial:m884_14 +# 884| r884_16(glval) = VariableAddress[s] : +# 884| m884_17(char *) = Store[s] : &:r884_16, r884_9 +#-----| Goto -> Block 153 + +# 886| Block 152 +# 886| r886_1(glval) = FunctionAddress[g_strdup_printf] : +# 886| r886_2(glval) = StringConstant["/usr/sbin:/usr/bin:/sbin:/bin:%s/bin"] : +# 886| r886_3(char *) = Convert : r886_2 +# 886| r886_4(char *) = Convert : r886_3 +# 886| r886_5(glval) = VariableAddress[pw] : +# 886| r886_6(passwd *) = Load[pw] : &:r886_5, ~m882_21 +# 886| r886_7(glval) = FieldAddress[pw_dir] : r886_6 +# 886| r886_8(char *) = Load[?] : &:r886_7, ~m882_21 +# 886| r886_9(char *) = Call[g_strdup_printf] : func:r886_1, 0:r886_4, 1:r886_8 +# 886| m886_10(unknown) = ^CallSideEffect : ~m882_21 +# 886| m886_11(unknown) = Chi : total:m882_21, partial:m886_10 +# 886| v886_12(void) = ^BufferReadSideEffect[0] : &:r886_4, ~m435_3 +# 886| v886_13(void) = ^BufferReadSideEffect[1] : &:r886_8, ~m886_11 +# 886| m886_14(unknown) = ^BufferMayWriteSideEffect[1] : &:r886_8 +# 886| m886_15(unknown) = Chi : total:m886_11, partial:m886_14 +# 886| r886_16(glval) = VariableAddress[s] : +# 886| m886_17(char *) = Store[s] : &:r886_16, r886_9 +#-----| Goto -> Block 153 + +# 887| Block 153 +# 887| m887_1(unknown) = Phi : from 151:~m884_15, from 152:~m886_15 +# 887| m887_2(char *) = Phi : from 151:m884_17, from 152:m886_17 +# 887| r887_3(glval) = FunctionAddress[g_ptr_array_add] : +# 887| r887_4(glval<_GPtrArray *>) = VariableAddress[saved_env] : +# 887| r887_5(_GPtrArray *) = Load[saved_env] : &:r887_4, m656_9 +# 887| r887_6(glval) = VariableAddress[s] : +# 887| r887_7(char *) = Load[s] : &:r887_6, m887_2 +# 887| r887_8(void *) = Convert : r887_7 +# 887| v887_9(void) = Call[g_ptr_array_add] : func:r887_3, 0:r887_5, 1:r887_8 +# 887| m887_10(unknown) = ^CallSideEffect : ~m887_1 +# 887| m887_11(unknown) = Chi : total:m887_1, partial:m887_10 +# 887| v887_12(void) = ^BufferReadSideEffect[0] : &:r887_5, ~m887_11 +# 887| v887_13(void) = ^BufferReadSideEffect[1] : &:r887_8, ~m887_11 +# 887| m887_14(unknown) = ^BufferMayWriteSideEffect[0] : &:r887_5 +# 887| m887_15(unknown) = Chi : total:m887_11, partial:m887_14 +# 887| m887_16(unknown) = ^BufferMayWriteSideEffect[1] : &:r887_8 +# 887| m887_17(unknown) = Chi : total:m887_15, partial:m887_16 +# 888| r888_1(glval) = FunctionAddress[g_ptr_array_add] : +# 888| r888_2(glval<_GPtrArray *>) = VariableAddress[saved_env] : +# 888| r888_3(_GPtrArray *) = Load[saved_env] : &:r888_2, m656_9 +# 888| r888_4(glval) = FunctionAddress[g_strdup] : +# 888| r888_5(glval) = StringConstant["LOGNAME"] : +# 888| r888_6(char *) = Convert : r888_5 +# 888| r888_7(char *) = Convert : r888_6 +# 888| r888_8(char *) = Call[g_strdup] : func:r888_4, 0:r888_7 +# 888| m888_9(unknown) = ^CallSideEffect : ~m887_17 +# 888| m888_10(unknown) = Chi : total:m887_17, partial:m888_9 +# 888| v888_11(void) = ^BufferReadSideEffect[0] : &:r888_7, ~m435_3 +# 888| r888_12(void *) = Convert : r888_8 +# 888| v888_13(void) = Call[g_ptr_array_add] : func:r888_1, 0:r888_3, 1:r888_12 +# 888| m888_14(unknown) = ^CallSideEffect : ~m888_10 +# 888| m888_15(unknown) = Chi : total:m888_10, partial:m888_14 +# 888| v888_16(void) = ^BufferReadSideEffect[0] : &:r888_3, ~m888_15 +# 888| v888_17(void) = ^BufferReadSideEffect[1] : &:r888_12, ~m888_15 +# 888| m888_18(unknown) = ^BufferMayWriteSideEffect[0] : &:r888_3 +# 888| m888_19(unknown) = Chi : total:m888_15, partial:m888_18 +# 888| m888_20(unknown) = ^BufferMayWriteSideEffect[1] : &:r888_12 +# 888| m888_21(unknown) = Chi : total:m888_19, partial:m888_20 +# 889| r889_1(glval) = FunctionAddress[g_ptr_array_add] : +# 889| r889_2(glval<_GPtrArray *>) = VariableAddress[saved_env] : +# 889| r889_3(_GPtrArray *) = Load[saved_env] : &:r889_2, m656_9 +# 889| r889_4(glval) = FunctionAddress[g_strdup] : +# 889| r889_5(glval) = VariableAddress[pw] : +# 889| r889_6(passwd *) = Load[pw] : &:r889_5, ~m888_21 +# 889| r889_7(glval) = FieldAddress[pw_name] : r889_6 +# 889| r889_8(char *) = Load[?] : &:r889_7, ~m888_21 +# 889| r889_9(char *) = Convert : r889_8 +# 889| r889_10(char *) = Call[g_strdup] : func:r889_4, 0:r889_9 +# 889| m889_11(unknown) = ^CallSideEffect : ~m888_21 +# 889| m889_12(unknown) = Chi : total:m888_21, partial:m889_11 +# 889| v889_13(void) = ^BufferReadSideEffect[0] : &:r889_9, ~m889_12 +# 889| r889_14(void *) = Convert : r889_10 +# 889| v889_15(void) = Call[g_ptr_array_add] : func:r889_1, 0:r889_3, 1:r889_14 +# 889| m889_16(unknown) = ^CallSideEffect : ~m889_12 +# 889| m889_17(unknown) = Chi : total:m889_12, partial:m889_16 +# 889| v889_18(void) = ^BufferReadSideEffect[0] : &:r889_3, ~m889_17 +# 889| v889_19(void) = ^BufferReadSideEffect[1] : &:r889_14, ~m889_17 +# 889| m889_20(unknown) = ^BufferMayWriteSideEffect[0] : &:r889_3 +# 889| m889_21(unknown) = Chi : total:m889_17, partial:m889_20 +# 889| m889_22(unknown) = ^BufferMayWriteSideEffect[1] : &:r889_14 +# 889| m889_23(unknown) = Chi : total:m889_21, partial:m889_22 +# 890| r890_1(glval) = FunctionAddress[g_ptr_array_add] : +# 890| r890_2(glval<_GPtrArray *>) = VariableAddress[saved_env] : +# 890| r890_3(_GPtrArray *) = Load[saved_env] : &:r890_2, m656_9 +# 890| r890_4(glval) = FunctionAddress[g_strdup] : +# 890| r890_5(glval) = StringConstant["USER"] : +# 890| r890_6(char *) = Convert : r890_5 +# 890| r890_7(char *) = Convert : r890_6 +# 890| r890_8(char *) = Call[g_strdup] : func:r890_4, 0:r890_7 +# 890| m890_9(unknown) = ^CallSideEffect : ~m889_23 +# 890| m890_10(unknown) = Chi : total:m889_23, partial:m890_9 +# 890| v890_11(void) = ^BufferReadSideEffect[0] : &:r890_7, ~m435_3 +# 890| r890_12(void *) = Convert : r890_8 +# 890| v890_13(void) = Call[g_ptr_array_add] : func:r890_1, 0:r890_3, 1:r890_12 +# 890| m890_14(unknown) = ^CallSideEffect : ~m890_10 +# 890| m890_15(unknown) = Chi : total:m890_10, partial:m890_14 +# 890| v890_16(void) = ^BufferReadSideEffect[0] : &:r890_3, ~m890_15 +# 890| v890_17(void) = ^BufferReadSideEffect[1] : &:r890_12, ~m890_15 +# 890| m890_18(unknown) = ^BufferMayWriteSideEffect[0] : &:r890_3 +# 890| m890_19(unknown) = Chi : total:m890_15, partial:m890_18 +# 890| m890_20(unknown) = ^BufferMayWriteSideEffect[1] : &:r890_12 +# 890| m890_21(unknown) = Chi : total:m890_19, partial:m890_20 +# 891| r891_1(glval) = FunctionAddress[g_ptr_array_add] : +# 891| r891_2(glval<_GPtrArray *>) = VariableAddress[saved_env] : +# 891| r891_3(_GPtrArray *) = Load[saved_env] : &:r891_2, m656_9 +# 891| r891_4(glval) = FunctionAddress[g_strdup] : +# 891| r891_5(glval) = VariableAddress[pw] : +# 891| r891_6(passwd *) = Load[pw] : &:r891_5, ~m890_21 +# 891| r891_7(glval) = FieldAddress[pw_name] : r891_6 +# 891| r891_8(char *) = Load[?] : &:r891_7, ~m890_21 +# 891| r891_9(char *) = Convert : r891_8 +# 891| r891_10(char *) = Call[g_strdup] : func:r891_4, 0:r891_9 +# 891| m891_11(unknown) = ^CallSideEffect : ~m890_21 +# 891| m891_12(unknown) = Chi : total:m890_21, partial:m891_11 +# 891| v891_13(void) = ^BufferReadSideEffect[0] : &:r891_9, ~m891_12 +# 891| r891_14(void *) = Convert : r891_10 +# 891| v891_15(void) = Call[g_ptr_array_add] : func:r891_1, 0:r891_3, 1:r891_14 +# 891| m891_16(unknown) = ^CallSideEffect : ~m891_12 +# 891| m891_17(unknown) = Chi : total:m891_12, partial:m891_16 +# 891| v891_18(void) = ^BufferReadSideEffect[0] : &:r891_3, ~m891_17 +# 891| v891_19(void) = ^BufferReadSideEffect[1] : &:r891_14, ~m891_17 +# 891| m891_20(unknown) = ^BufferMayWriteSideEffect[0] : &:r891_3 +# 891| m891_21(unknown) = Chi : total:m891_17, partial:m891_20 +# 891| m891_22(unknown) = ^BufferMayWriteSideEffect[1] : &:r891_14 +# 891| m891_23(unknown) = Chi : total:m891_21, partial:m891_22 +# 892| r892_1(glval) = FunctionAddress[g_ptr_array_add] : +# 892| r892_2(glval<_GPtrArray *>) = VariableAddress[saved_env] : +# 892| r892_3(_GPtrArray *) = Load[saved_env] : &:r892_2, m656_9 +# 892| r892_4(glval) = FunctionAddress[g_strdup] : +# 892| r892_5(glval) = StringConstant["HOME"] : +# 892| r892_6(char *) = Convert : r892_5 +# 892| r892_7(char *) = Convert : r892_6 +# 892| r892_8(char *) = Call[g_strdup] : func:r892_4, 0:r892_7 +# 892| m892_9(unknown) = ^CallSideEffect : ~m891_23 +# 892| m892_10(unknown) = Chi : total:m891_23, partial:m892_9 +# 892| v892_11(void) = ^BufferReadSideEffect[0] : &:r892_7, ~m435_3 +# 892| r892_12(void *) = Convert : r892_8 +# 892| v892_13(void) = Call[g_ptr_array_add] : func:r892_1, 0:r892_3, 1:r892_12 +# 892| m892_14(unknown) = ^CallSideEffect : ~m892_10 +# 892| m892_15(unknown) = Chi : total:m892_10, partial:m892_14 +# 892| v892_16(void) = ^BufferReadSideEffect[0] : &:r892_3, ~m892_15 +# 892| v892_17(void) = ^BufferReadSideEffect[1] : &:r892_12, ~m892_15 +# 892| m892_18(unknown) = ^BufferMayWriteSideEffect[0] : &:r892_3 +# 892| m892_19(unknown) = Chi : total:m892_15, partial:m892_18 +# 892| m892_20(unknown) = ^BufferMayWriteSideEffect[1] : &:r892_12 +# 892| m892_21(unknown) = Chi : total:m892_19, partial:m892_20 +# 893| r893_1(glval) = FunctionAddress[g_ptr_array_add] : +# 893| r893_2(glval<_GPtrArray *>) = VariableAddress[saved_env] : +# 893| r893_3(_GPtrArray *) = Load[saved_env] : &:r893_2, m656_9 +# 893| r893_4(glval) = FunctionAddress[g_strdup] : +# 893| r893_5(glval) = VariableAddress[pw] : +# 893| r893_6(passwd *) = Load[pw] : &:r893_5, ~m892_21 +# 893| r893_7(glval) = FieldAddress[pw_dir] : r893_6 +# 893| r893_8(char *) = Load[?] : &:r893_7, ~m892_21 +# 893| r893_9(char *) = Convert : r893_8 +# 893| r893_10(char *) = Call[g_strdup] : func:r893_4, 0:r893_9 +# 893| m893_11(unknown) = ^CallSideEffect : ~m892_21 +# 893| m893_12(unknown) = Chi : total:m892_21, partial:m893_11 +# 893| v893_13(void) = ^BufferReadSideEffect[0] : &:r893_9, ~m893_12 +# 893| r893_14(void *) = Convert : r893_10 +# 893| v893_15(void) = Call[g_ptr_array_add] : func:r893_1, 0:r893_3, 1:r893_14 +# 893| m893_16(unknown) = ^CallSideEffect : ~m893_12 +# 893| m893_17(unknown) = Chi : total:m893_12, partial:m893_16 +# 893| v893_18(void) = ^BufferReadSideEffect[0] : &:r893_3, ~m893_17 +# 893| v893_19(void) = ^BufferReadSideEffect[1] : &:r893_14, ~m893_17 +# 893| m893_20(unknown) = ^BufferMayWriteSideEffect[0] : &:r893_3 +# 893| m893_21(unknown) = Chi : total:m893_17, partial:m893_20 +# 893| m893_22(unknown) = ^BufferMayWriteSideEffect[1] : &:r893_14 +# 893| m893_23(unknown) = Chi : total:m893_21, partial:m893_22 +# 895| r895_1(glval) = FunctionAddress[g_strdup_printf] : +# 895| r895_2(glval) = StringConstant["%d"] : +# 895| r895_3(char *) = Convert : r895_2 +# 895| r895_4(char *) = Convert : r895_3 +# 895| r895_5(glval) = FunctionAddress[getuid] : +# 895| r895_6(unsigned int) = Call[getuid] : func:r895_5 +# 895| m895_7(unknown) = ^CallSideEffect : ~m893_23 +# 895| m895_8(unknown) = Chi : total:m893_23, partial:m895_7 +# 895| r895_9(char *) = Call[g_strdup_printf] : func:r895_1, 0:r895_4, 1:r895_6 +# 895| m895_10(unknown) = ^CallSideEffect : ~m895_8 +# 895| m895_11(unknown) = Chi : total:m895_8, partial:m895_10 +# 895| v895_12(void) = ^BufferReadSideEffect[0] : &:r895_4, ~m435_3 +# 895| r895_13(glval) = VariableAddress[s] : +# 895| m895_14(char *) = Store[s] : &:r895_13, r895_9 +# 896| r896_1(glval) = FunctionAddress[g_ptr_array_add] : +# 896| r896_2(glval<_GPtrArray *>) = VariableAddress[saved_env] : +# 896| r896_3(_GPtrArray *) = Load[saved_env] : &:r896_2, m656_9 +# 896| r896_4(glval) = FunctionAddress[g_strdup] : +# 896| r896_5(glval) = StringConstant["PKEXEC_UID"] : +# 896| r896_6(char *) = Convert : r896_5 +# 896| r896_7(char *) = Convert : r896_6 +# 896| r896_8(char *) = Call[g_strdup] : func:r896_4, 0:r896_7 +# 896| m896_9(unknown) = ^CallSideEffect : ~m895_11 +# 896| m896_10(unknown) = Chi : total:m895_11, partial:m896_9 +# 896| v896_11(void) = ^BufferReadSideEffect[0] : &:r896_7, ~m435_3 +# 896| r896_12(void *) = Convert : r896_8 +# 896| v896_13(void) = Call[g_ptr_array_add] : func:r896_1, 0:r896_3, 1:r896_12 +# 896| m896_14(unknown) = ^CallSideEffect : ~m896_10 +# 896| m896_15(unknown) = Chi : total:m896_10, partial:m896_14 +# 896| v896_16(void) = ^BufferReadSideEffect[0] : &:r896_3, ~m896_15 +# 896| v896_17(void) = ^BufferReadSideEffect[1] : &:r896_12, ~m896_15 +# 896| m896_18(unknown) = ^BufferMayWriteSideEffect[0] : &:r896_3 +# 896| m896_19(unknown) = Chi : total:m896_15, partial:m896_18 +# 896| m896_20(unknown) = ^BufferMayWriteSideEffect[1] : &:r896_12 +# 896| m896_21(unknown) = Chi : total:m896_19, partial:m896_20 +# 897| r897_1(glval) = FunctionAddress[g_ptr_array_add] : +# 897| r897_2(glval<_GPtrArray *>) = VariableAddress[saved_env] : +# 897| r897_3(_GPtrArray *) = Load[saved_env] : &:r897_2, m656_9 +# 897| r897_4(glval) = VariableAddress[s] : +# 897| r897_5(char *) = Load[s] : &:r897_4, m895_14 +# 897| r897_6(void *) = Convert : r897_5 +# 897| v897_7(void) = Call[g_ptr_array_add] : func:r897_1, 0:r897_3, 1:r897_6 +# 897| m897_8(unknown) = ^CallSideEffect : ~m896_21 +# 897| m897_9(unknown) = Chi : total:m896_21, partial:m897_8 +# 897| v897_10(void) = ^BufferReadSideEffect[0] : &:r897_3, ~m897_9 +# 897| v897_11(void) = ^BufferReadSideEffect[1] : &:r897_6, ~m897_9 +# 897| m897_12(unknown) = ^BufferMayWriteSideEffect[0] : &:r897_3 +# 897| m897_13(unknown) = Chi : total:m897_9, partial:m897_12 +# 897| m897_14(unknown) = ^BufferMayWriteSideEffect[1] : &:r897_6 +# 897| m897_15(unknown) = Chi : total:m897_13, partial:m897_14 +# 900| r900_1(unsigned int) = Constant[0] : +# 900| r900_2(glval) = VariableAddress[n] : +# 900| m900_3(unsigned int) = Store[n] : &:r900_2, r900_1 +#-----| Goto -> Block 154 + +# 900| Block 154 +# 900| m900_4(unknown) = Phi : from 153:~m897_15, from 161:~m900_16 +# 900| m900_5(unsigned int) = Phi : from 153:m900_3, from 161:m900_22 +# 900| r900_6(glval) = VariableAddress[n] : +# 900| r900_7(unsigned int) = Load[n] : &:r900_6, m900_5 +# 900| r900_8(glval<_GPtrArray *>) = VariableAddress[saved_env] : +# 900| r900_9(_GPtrArray *) = Load[saved_env] : &:r900_8, m656_9 +# 900| r900_10(glval) = FieldAddress[len] : r900_9 +# 900| r900_11(unsigned int) = Load[?] : &:r900_10, ~m900_4 +# 900| r900_12(unsigned int) = Constant[1] : +# 900| r900_13(unsigned int) = Sub : r900_11, r900_12 +# 900| r900_14(int) = CompareLT : r900_7, r900_13 +# 900| v900_15(void) = ConditionalBranch : r900_14 +#-----| False -> Block 162 +#-----| True -> Block 155 + +# 902| Block 155 +# 902| r902_1(glval) = VariableAddress[key] : +# 902| r902_2(glval<_GPtrArray *>) = VariableAddress[saved_env] : +# 902| r902_3(_GPtrArray *) = Load[saved_env] : &:r902_2, m656_9 +# 902| r902_4(glval) = FieldAddress[pdata] : r902_3 +# 902| r902_5(void **) = Load[?] : &:r902_4, ~m900_4 +# 902| r902_6(glval) = VariableAddress[n] : +# 902| r902_7(unsigned int) = Load[n] : &:r902_6, m900_5 +# 902| r902_8(glval) = PointerAdd[8] : r902_5, r902_7 +# 902| r902_9(void *) = Load[?] : &:r902_8, ~m900_4 +# 902| r902_10(char *) = Convert : r902_9 +# 902| m902_11(char *) = Store[key] : &:r902_1, r902_10 +# 903| r903_1(glval) = VariableAddress[value] : +# 903| r903_2(glval<_GPtrArray *>) = VariableAddress[saved_env] : +# 903| r903_3(_GPtrArray *) = Load[saved_env] : &:r903_2, m656_9 +# 903| r903_4(glval) = FieldAddress[pdata] : r903_3 +# 903| r903_5(void **) = Load[?] : &:r903_4, ~m900_4 +# 903| r903_6(glval) = VariableAddress[n] : +# 903| r903_7(unsigned int) = Load[n] : &:r903_6, m900_5 +# 903| r903_8(unsigned int) = Constant[1] : +# 903| r903_9(unsigned int) = Add : r903_7, r903_8 +# 903| r903_10(glval) = PointerAdd[8] : r903_5, r903_9 +# 903| r903_11(void *) = Load[?] : &:r903_10, ~m900_4 +# 903| r903_12(char *) = Convert : r903_11 +# 903| m903_13(char *) = Store[value] : &:r903_1, r903_12 +# 906| r906_1(glval) = VariableAddress[allow_gui] : +# 906| r906_2(int) = Load[allow_gui] : &:r906_1, m766_5 +# 906| v906_3(void) = ConditionalBranch : r906_2 +#-----| False -> Block 156 +#-----| True -> Block 159 + +# 907| Block 156 +# 907| r907_1(glval) = FunctionAddress[strcmp] : +# 907| r907_2(glval) = VariableAddress[key] : +# 907| r907_3(char *) = Load[key] : &:r907_2, m902_11 +# 907| r907_4(glval) = StringConstant["DISPLAY"] : +# 907| r907_5(char *) = Convert : r907_4 +# 907| r907_6(char *) = Convert : r907_5 +# 907| r907_7(int) = Call[strcmp] : func:r907_1, 0:r907_3, 1:r907_6 +# 907| v907_8(void) = ^BufferReadSideEffect[0] : &:r907_3, ~m900_4 +# 907| v907_9(void) = ^BufferReadSideEffect[1] : &:r907_6, ~m435_3 +# 907| r907_10(int) = Constant[0] : +# 907| r907_11(int) = CompareEQ : r907_7, r907_10 +# 907| v907_12(void) = ConditionalBranch : r907_11 +#-----| False -> Block 157 +#-----| True -> Block 158 + +# 907| Block 157 +# 907| r907_13(glval) = FunctionAddress[strcmp] : +# 907| r907_14(glval) = VariableAddress[key] : +# 907| r907_15(char *) = Load[key] : &:r907_14, m902_11 +# 907| r907_16(glval) = StringConstant["XAUTHORITY"] : +# 907| r907_17(char *) = Convert : r907_16 +# 907| r907_18(char *) = Convert : r907_17 +# 907| r907_19(int) = Call[strcmp] : func:r907_13, 0:r907_15, 1:r907_18 +# 907| v907_20(void) = ^BufferReadSideEffect[0] : &:r907_15, ~m900_4 +# 907| v907_21(void) = ^BufferReadSideEffect[1] : &:r907_18, ~m435_3 +# 907| r907_22(int) = Constant[0] : +# 907| r907_23(int) = CompareEQ : r907_19, r907_22 +# 907| v907_24(void) = ConditionalBranch : r907_23 +#-----| False -> Block 159 +#-----| True -> Block 158 + +# 908| Block 158 +# 908| v908_1(void) = NoOp : +#-----| Goto -> Block 161 + +# 910| Block 159 +# 910| r910_1(glval) = FunctionAddress[g_setenv] : +# 910| r910_2(glval) = VariableAddress[key] : +# 910| r910_3(char *) = Load[key] : &:r910_2, m902_11 +# 910| r910_4(glval) = VariableAddress[value] : +# 910| r910_5(char *) = Load[value] : &:r910_4, m903_13 +# 910| r910_6(int) = Constant[1] : +# 910| r910_7(int) = Call[g_setenv] : func:r910_1, 0:r910_3, 1:r910_5, 2:r910_6 +# 910| m910_8(unknown) = ^CallSideEffect : ~m900_4 +# 910| m910_9(unknown) = Chi : total:m900_4, partial:m910_8 +# 910| v910_10(void) = ^BufferReadSideEffect[0] : &:r910_3, ~m910_9 +# 910| v910_11(void) = ^BufferReadSideEffect[1] : &:r910_5, ~m910_9 +# 910| v910_12(void) = ConditionalBranch : r910_7 +#-----| False -> Block 160 +#-----| True -> Block 161 + +# 912| Block 160 +# 912| r912_1(glval) = FunctionAddress[g_printerr] : +# 912| r912_2(glval) = StringConstant["Error setting environment variable %s to '%s': %s\n"] : +# 912| r912_3(char *) = Convert : r912_2 +# 912| r912_4(char *) = Convert : r912_3 +# 913| r913_1(glval) = VariableAddress[key] : +# 913| r913_2(char *) = Load[key] : &:r913_1, m902_11 +# 914| r914_1(glval) = VariableAddress[value] : +# 914| r914_2(char *) = Load[value] : &:r914_1, m903_13 +# 915| r915_1(glval) = FunctionAddress[g_strerror] : +# 915| r915_2(glval) = FunctionAddress[__errno_location] : +# 915| r915_3(int *) = Call[__errno_location] : func:r915_2 +# 915| m915_4(unknown) = ^CallSideEffect : ~m910_9 +# 915| m915_5(unknown) = Chi : total:m910_9, partial:m915_4 +# 915| r915_6(int) = Load[?] : &:r915_3, ~m915_5 +# 915| r915_7(char *) = Call[g_strerror] : func:r915_1, 0:r915_6 +# 915| m915_8(unknown) = ^CallSideEffect : ~m915_5 +# 915| m915_9(unknown) = Chi : total:m915_5, partial:m915_8 +# 912| v912_5(void) = Call[g_printerr] : func:r912_1, 0:r912_4, 1:r913_2, 2:r914_2, 3:r915_7 +# 912| m912_6(unknown) = ^CallSideEffect : ~m915_9 +# 912| m912_7(unknown) = Chi : total:m915_9, partial:m912_6 +# 912| v912_8(void) = ^BufferReadSideEffect[0] : &:r912_4, ~m435_3 +# 913| v913_3(void) = ^BufferReadSideEffect[1] : &:r913_2, ~m912_7 +# 914| v914_3(void) = ^BufferReadSideEffect[2] : &:r914_2, ~m912_7 +# 915| v915_10(void) = ^BufferReadSideEffect[3] : &:r915_7, ~m912_7 +# 913| m913_4(unknown) = ^BufferMayWriteSideEffect[1] : &:r913_2 +# 913| m913_5(unknown) = Chi : total:m912_7, partial:m913_4 +# 914| m914_4(unknown) = ^BufferMayWriteSideEffect[2] : &:r914_2 +# 914| m914_5(unknown) = Chi : total:m913_5, partial:m914_4 +# 915| m915_11(unknown) = ^BufferMayWriteSideEffect[3] : &:r915_7 +# 915| m915_12(unknown) = Chi : total:m914_5, partial:m915_11 +# 916| v916_1(void) = NoOp : +#-----| Goto -> Block 184 + +# 900| Block 161 +# 900| m900_16(unknown) = Phi : from 158:~m900_4, from 159:~m910_9 +# 900| v900_17(void) = NoOp : +# 900| r900_18(unsigned int) = Constant[2] : +# 900| r900_19(glval) = VariableAddress[n] : +# 900| r900_20(unsigned int) = Load[n] : &:r900_19, m900_5 +# 900| r900_21(unsigned int) = Add : r900_20, r900_18 +# 900| m900_22(unsigned int) = Store[n] : &:r900_19, r900_21 +#-----| Goto (back edge) -> Block 154 + +# 921| Block 162 +# 921| r921_1(glval) = FunctionAddress[fdwalk] : +# 921| r921_2(..(*)(..)) = FunctionAddress[set_close_on_exec] : +# 921| r921_3(void *) = Constant[3] : +# 921| r921_4(int) = Call[fdwalk] : func:r921_1, 0:r921_2, 1:r921_3 +# 921| m921_5(unknown) = ^CallSideEffect : ~m900_4 +# 921| m921_6(unknown) = Chi : total:m900_4, partial:m921_5 +# 921| v921_7(void) = ^BufferReadSideEffect[1] : &:r921_3, ~m921_6 +# 921| m921_8(unknown) = ^BufferMayWriteSideEffect[1] : &:r921_3 +# 921| m921_9(unknown) = Chi : total:m921_6, partial:m921_8 +# 921| v921_10(void) = ConditionalBranch : r921_4 +#-----| False -> Block 163 +#-----| True -> Block 164 + +# 923| Block 163 +# 923| r923_1(glval) = FunctionAddress[g_printerr] : +# 923| r923_2(glval) = StringConstant["Error setting close-on-exec for file desriptors\n"] : +# 923| r923_3(char *) = Convert : r923_2 +# 923| r923_4(char *) = Convert : r923_3 +# 923| v923_5(void) = Call[g_printerr] : func:r923_1, 0:r923_4 +# 923| m923_6(unknown) = ^CallSideEffect : ~m921_9 +# 923| m923_7(unknown) = Chi : total:m921_9, partial:m923_6 +# 923| v923_8(void) = ^BufferReadSideEffect[0] : &:r923_4, ~m435_3 +# 924| v924_1(void) = NoOp : +#-----| Goto -> Block 184 + +# 928| Block 164 +# 928| r928_1(glval) = VariableAddress[pw] : +# 928| r928_2(passwd *) = Load[pw] : &:r928_1, ~m921_9 +# 928| r928_3(glval) = FieldAddress[pw_uid] : r928_2 +# 928| r928_4(unsigned int) = Load[?] : &:r928_3, ~m921_9 +# 928| r928_5(unsigned int) = Constant[0] : +# 928| r928_6(int) = CompareNE : r928_4, r928_5 +# 928| v928_7(void) = ConditionalBranch : r928_6 +#-----| False -> Block 168 +#-----| True -> Block 165 + +# 930| Block 165 +# 930| r930_1(glval) = FunctionAddress[setreuid] : +# 930| r930_2(unsigned int) = Constant[0] : +# 930| r930_3(unsigned int) = Constant[0] : +# 930| r930_4(int) = Call[setreuid] : func:r930_1, 0:r930_2, 1:r930_3 +# 930| m930_5(unknown) = ^CallSideEffect : ~m921_9 +# 930| m930_6(unknown) = Chi : total:m921_9, partial:m930_5 +# 931| r931_1(glval) = FunctionAddress[geteuid] : +# 931| r931_2(unsigned int) = Call[geteuid] : func:r931_1 +# 931| m931_3(unknown) = ^CallSideEffect : ~m930_6 +# 931| m931_4(unknown) = Chi : total:m930_6, partial:m931_3 +# 931| r931_5(unsigned int) = Constant[0] : +# 931| r931_6(int) = CompareNE : r931_2, r931_5 +# 931| v931_7(void) = ConditionalBranch : r931_6 +#-----| False -> Block 166 +#-----| True -> Block 167 + +# 931| Block 166 +# 931| r931_8(glval) = FunctionAddress[getuid] : +# 931| r931_9(unsigned int) = Call[getuid] : func:r931_8 +# 931| m931_10(unknown) = ^CallSideEffect : ~m931_4 +# 931| m931_11(unknown) = Chi : total:m931_4, partial:m931_10 +# 931| r931_12(unsigned int) = Constant[0] : +# 931| r931_13(int) = CompareNE : r931_9, r931_12 +# 931| v931_14(void) = ConditionalBranch : r931_13 +#-----| False -> Block 168 +#-----| True -> Block 167 + +# 933| Block 167 +# 933| m933_1(unknown) = Phi : from 165:~m931_4, from 166:~m931_11 +# 933| r933_2(glval) = FunctionAddress[g_printerr] : +# 933| r933_3(glval) = StringConstant["Error becoming uid 0: %s\n"] : +# 933| r933_4(char *) = Convert : r933_3 +# 933| r933_5(char *) = Convert : r933_4 +# 933| r933_6(glval) = FunctionAddress[g_strerror] : +# 933| r933_7(glval) = FunctionAddress[__errno_location] : +# 933| r933_8(int *) = Call[__errno_location] : func:r933_7 +# 933| m933_9(unknown) = ^CallSideEffect : ~m933_1 +# 933| m933_10(unknown) = Chi : total:m933_1, partial:m933_9 +# 933| r933_11(int) = Load[?] : &:r933_8, ~m933_10 +# 933| r933_12(char *) = Call[g_strerror] : func:r933_6, 0:r933_11 +# 933| m933_13(unknown) = ^CallSideEffect : ~m933_10 +# 933| m933_14(unknown) = Chi : total:m933_10, partial:m933_13 +# 933| v933_15(void) = Call[g_printerr] : func:r933_2, 0:r933_5, 1:r933_12 +# 933| m933_16(unknown) = ^CallSideEffect : ~m933_14 +# 933| m933_17(unknown) = Chi : total:m933_14, partial:m933_16 +# 933| v933_18(void) = ^BufferReadSideEffect[0] : &:r933_5, ~m435_3 +# 933| v933_19(void) = ^BufferReadSideEffect[1] : &:r933_12, ~m933_17 +# 933| m933_20(unknown) = ^BufferMayWriteSideEffect[1] : &:r933_12 +# 933| m933_21(unknown) = Chi : total:m933_17, partial:m933_20 +# 934| v934_1(void) = NoOp : +#-----| Goto -> Block 184 + +# 965| Block 168 +# 965| m965_1(unknown) = Phi : from 164:~m921_9, from 166:~m931_11 +# 965| r965_2(glval) = FunctionAddress[open_session] : +# 965| r965_3(glval) = VariableAddress[pw] : +# 965| r965_4(passwd *) = Load[pw] : &:r965_3, ~m965_1 +# 965| r965_5(glval) = FieldAddress[pw_name] : r965_4 +# 965| r965_6(char *) = Load[?] : &:r965_5, ~m965_1 +# 965| r965_7(char *) = Convert : r965_6 +# 966| r966_1(glval) = VariableAddress[pw] : +# 966| r966_2(passwd *) = Load[pw] : &:r966_1, ~m965_1 +# 966| r966_3(glval) = FieldAddress[pw_uid] : r966_2 +# 966| r966_4(unsigned int) = Load[?] : &:r966_3, ~m965_1 +# 965| r965_8(int) = Call[open_session] : func:r965_2, 0:r965_7, 1:r966_4 +# 965| m965_9(unknown) = ^CallSideEffect : ~m965_1 +# 965| m965_10(unknown) = Chi : total:m965_1, partial:m965_9 +# 965| v965_11(void) = ^BufferReadSideEffect[0] : &:r965_7, ~m965_10 +# 965| v965_12(void) = ConditionalBranch : r965_8 +#-----| False -> Block 169 +#-----| True -> Block 170 + +# 968| Block 169 +# 968| v968_1(void) = NoOp : +#-----| Goto -> Block 184 + +# 973| Block 170 +# 973| r973_1(glval) = FunctionAddress[setgroups] : +# 973| r973_2(unsigned long) = Constant[0] : +# 973| r973_3(unsigned int *) = Constant[0] : +# 973| r973_4(int) = Call[setgroups] : func:r973_1, 0:r973_2, 1:r973_3 +# 973| m973_5(unknown) = ^CallSideEffect : ~m965_10 +# 973| m973_6(unknown) = Chi : total:m965_10, partial:m973_5 +# 973| v973_7(void) = ^BufferReadSideEffect[1] : &:r973_3, ~m973_6 +# 973| r973_8(int) = Constant[0] : +# 973| r973_9(int) = CompareNE : r973_4, r973_8 +# 973| v973_10(void) = ConditionalBranch : r973_9 +#-----| False -> Block 172 +#-----| True -> Block 171 + +# 975| Block 171 +# 975| r975_1(glval) = FunctionAddress[g_printerr] : +# 975| r975_2(glval) = StringConstant["Error setting groups: %s\n"] : +# 975| r975_3(char *) = Convert : r975_2 +# 975| r975_4(char *) = Convert : r975_3 +# 975| r975_5(glval) = FunctionAddress[g_strerror] : +# 975| r975_6(glval) = FunctionAddress[__errno_location] : +# 975| r975_7(int *) = Call[__errno_location] : func:r975_6 +# 975| m975_8(unknown) = ^CallSideEffect : ~m973_6 +# 975| m975_9(unknown) = Chi : total:m973_6, partial:m975_8 +# 975| r975_10(int) = Load[?] : &:r975_7, ~m975_9 +# 975| r975_11(char *) = Call[g_strerror] : func:r975_5, 0:r975_10 +# 975| m975_12(unknown) = ^CallSideEffect : ~m975_9 +# 975| m975_13(unknown) = Chi : total:m975_9, partial:m975_12 +# 975| v975_14(void) = Call[g_printerr] : func:r975_1, 0:r975_4, 1:r975_11 +# 975| m975_15(unknown) = ^CallSideEffect : ~m975_13 +# 975| m975_16(unknown) = Chi : total:m975_13, partial:m975_15 +# 975| v975_17(void) = ^BufferReadSideEffect[0] : &:r975_4, ~m435_3 +# 975| v975_18(void) = ^BufferReadSideEffect[1] : &:r975_11, ~m975_16 +# 975| m975_19(unknown) = ^BufferMayWriteSideEffect[1] : &:r975_11 +# 975| m975_20(unknown) = Chi : total:m975_16, partial:m975_19 +# 976| v976_1(void) = NoOp : +#-----| Goto -> Block 184 + +# 978| Block 172 +# 978| r978_1(glval) = FunctionAddress[initgroups] : +# 978| r978_2(glval) = VariableAddress[pw] : +# 978| r978_3(passwd *) = Load[pw] : &:r978_2, ~m973_6 +# 978| r978_4(glval) = FieldAddress[pw_name] : r978_3 +# 978| r978_5(char *) = Load[?] : &:r978_4, ~m973_6 +# 978| r978_6(char *) = Convert : r978_5 +# 978| r978_7(glval) = VariableAddress[pw] : +# 978| r978_8(passwd *) = Load[pw] : &:r978_7, ~m973_6 +# 978| r978_9(glval) = FieldAddress[pw_gid] : r978_8 +# 978| r978_10(unsigned int) = Load[?] : &:r978_9, ~m973_6 +# 978| r978_11(int) = Call[initgroups] : func:r978_1, 0:r978_6, 1:r978_10 +# 978| m978_12(unknown) = ^CallSideEffect : ~m973_6 +# 978| m978_13(unknown) = Chi : total:m973_6, partial:m978_12 +# 978| v978_14(void) = ^BufferReadSideEffect[0] : &:r978_6, ~m978_13 +# 978| r978_15(int) = Constant[0] : +# 978| r978_16(int) = CompareNE : r978_11, r978_15 +# 978| v978_17(void) = ConditionalBranch : r978_16 +#-----| False -> Block 174 +#-----| True -> Block 173 + +# 980| Block 173 +# 980| r980_1(glval) = FunctionAddress[g_printerr] : +# 980| r980_2(glval) = StringConstant["Error initializing groups for %s: %s\n"] : +# 980| r980_3(char *) = Convert : r980_2 +# 980| r980_4(char *) = Convert : r980_3 +# 980| r980_5(glval) = VariableAddress[pw] : +# 980| r980_6(passwd *) = Load[pw] : &:r980_5, ~m978_13 +# 980| r980_7(glval) = FieldAddress[pw_name] : r980_6 +# 980| r980_8(char *) = Load[?] : &:r980_7, ~m978_13 +# 980| r980_9(glval) = FunctionAddress[g_strerror] : +# 980| r980_10(glval) = FunctionAddress[__errno_location] : +# 980| r980_11(int *) = Call[__errno_location] : func:r980_10 +# 980| m980_12(unknown) = ^CallSideEffect : ~m978_13 +# 980| m980_13(unknown) = Chi : total:m978_13, partial:m980_12 +# 980| r980_14(int) = Load[?] : &:r980_11, ~m980_13 +# 980| r980_15(char *) = Call[g_strerror] : func:r980_9, 0:r980_14 +# 980| m980_16(unknown) = ^CallSideEffect : ~m980_13 +# 980| m980_17(unknown) = Chi : total:m980_13, partial:m980_16 +# 980| v980_18(void) = Call[g_printerr] : func:r980_1, 0:r980_4, 1:r980_8, 2:r980_15 +# 980| m980_19(unknown) = ^CallSideEffect : ~m980_17 +# 980| m980_20(unknown) = Chi : total:m980_17, partial:m980_19 +# 980| v980_21(void) = ^BufferReadSideEffect[0] : &:r980_4, ~m435_3 +# 980| v980_22(void) = ^BufferReadSideEffect[1] : &:r980_8, ~m980_20 +# 980| v980_23(void) = ^BufferReadSideEffect[2] : &:r980_15, ~m980_20 +# 980| m980_24(unknown) = ^BufferMayWriteSideEffect[1] : &:r980_8 +# 980| m980_25(unknown) = Chi : total:m980_20, partial:m980_24 +# 980| m980_26(unknown) = ^BufferMayWriteSideEffect[2] : &:r980_15 +# 980| m980_27(unknown) = Chi : total:m980_25, partial:m980_26 +# 981| v981_1(void) = NoOp : +#-----| Goto -> Block 184 + +# 983| Block 174 +# 983| r983_1(glval) = FunctionAddress[setregid] : +# 983| r983_2(glval) = VariableAddress[pw] : +# 983| r983_3(passwd *) = Load[pw] : &:r983_2, ~m978_13 +# 983| r983_4(glval) = FieldAddress[pw_gid] : r983_3 +# 983| r983_5(unsigned int) = Load[?] : &:r983_4, ~m978_13 +# 983| r983_6(glval) = VariableAddress[pw] : +# 983| r983_7(passwd *) = Load[pw] : &:r983_6, ~m978_13 +# 983| r983_8(glval) = FieldAddress[pw_gid] : r983_7 +# 983| r983_9(unsigned int) = Load[?] : &:r983_8, ~m978_13 +# 983| r983_10(int) = Call[setregid] : func:r983_1, 0:r983_5, 1:r983_9 +# 983| m983_11(unknown) = ^CallSideEffect : ~m978_13 +# 983| m983_12(unknown) = Chi : total:m978_13, partial:m983_11 +# 984| r984_1(glval) = FunctionAddress[setreuid] : +# 984| r984_2(glval) = VariableAddress[pw] : +# 984| r984_3(passwd *) = Load[pw] : &:r984_2, ~m983_12 +# 984| r984_4(glval) = FieldAddress[pw_uid] : r984_3 +# 984| r984_5(unsigned int) = Load[?] : &:r984_4, ~m983_12 +# 984| r984_6(glval) = VariableAddress[pw] : +# 984| r984_7(passwd *) = Load[pw] : &:r984_6, ~m983_12 +# 984| r984_8(glval) = FieldAddress[pw_uid] : r984_7 +# 984| r984_9(unsigned int) = Load[?] : &:r984_8, ~m983_12 +# 984| r984_10(int) = Call[setreuid] : func:r984_1, 0:r984_5, 1:r984_9 +# 984| m984_11(unknown) = ^CallSideEffect : ~m983_12 +# 984| m984_12(unknown) = Chi : total:m983_12, partial:m984_11 +# 985| r985_1(glval) = FunctionAddress[geteuid] : +# 985| r985_2(unsigned int) = Call[geteuid] : func:r985_1 +# 985| m985_3(unknown) = ^CallSideEffect : ~m984_12 +# 985| m985_4(unknown) = Chi : total:m984_12, partial:m985_3 +# 985| r985_5(glval) = VariableAddress[pw] : +# 985| r985_6(passwd *) = Load[pw] : &:r985_5, ~m985_4 +# 985| r985_7(glval) = FieldAddress[pw_uid] : r985_6 +# 985| r985_8(unsigned int) = Load[?] : &:r985_7, ~m985_4 +# 985| r985_9(int) = CompareNE : r985_2, r985_8 +# 985| v985_10(void) = ConditionalBranch : r985_9 +#-----| False -> Block 175 +#-----| True -> Block 178 + +# 985| Block 175 +# 985| r985_11(glval) = FunctionAddress[getuid] : +# 985| r985_12(unsigned int) = Call[getuid] : func:r985_11 +# 985| m985_13(unknown) = ^CallSideEffect : ~m985_4 +# 985| m985_14(unknown) = Chi : total:m985_4, partial:m985_13 +# 985| r985_15(glval) = VariableAddress[pw] : +# 985| r985_16(passwd *) = Load[pw] : &:r985_15, ~m985_14 +# 985| r985_17(glval) = FieldAddress[pw_uid] : r985_16 +# 985| r985_18(unsigned int) = Load[?] : &:r985_17, ~m985_14 +# 985| r985_19(int) = CompareNE : r985_12, r985_18 +# 985| v985_20(void) = ConditionalBranch : r985_19 +#-----| False -> Block 176 +#-----| True -> Block 178 + +# 986| Block 176 +# 986| r986_1(glval) = FunctionAddress[getegid] : +# 986| r986_2(unsigned int) = Call[getegid] : func:r986_1 +# 986| m986_3(unknown) = ^CallSideEffect : ~m985_14 +# 986| m986_4(unknown) = Chi : total:m985_14, partial:m986_3 +# 986| r986_5(glval) = VariableAddress[pw] : +# 986| r986_6(passwd *) = Load[pw] : &:r986_5, ~m986_4 +# 986| r986_7(glval) = FieldAddress[pw_gid] : r986_6 +# 986| r986_8(unsigned int) = Load[?] : &:r986_7, ~m986_4 +# 986| r986_9(int) = CompareNE : r986_2, r986_8 +# 986| v986_10(void) = ConditionalBranch : r986_9 +#-----| False -> Block 177 +#-----| True -> Block 178 + +# 986| Block 177 +# 986| r986_11(glval) = FunctionAddress[getgid] : +# 986| r986_12(unsigned int) = Call[getgid] : func:r986_11 +# 986| m986_13(unknown) = ^CallSideEffect : ~m986_4 +# 986| m986_14(unknown) = Chi : total:m986_4, partial:m986_13 +# 986| r986_15(glval) = VariableAddress[pw] : +# 986| r986_16(passwd *) = Load[pw] : &:r986_15, ~m986_14 +# 986| r986_17(glval) = FieldAddress[pw_gid] : r986_16 +# 986| r986_18(unsigned int) = Load[?] : &:r986_17, ~m986_14 +# 986| r986_19(int) = CompareNE : r986_12, r986_18 +# 986| v986_20(void) = ConditionalBranch : r986_19 +#-----| False -> Block 179 +#-----| True -> Block 178 + +# 988| Block 178 +# 988| m988_1(unknown) = Phi : from 174:~m985_4, from 175:~m985_14, from 176:~m986_4, from 177:~m986_14 +# 988| r988_2(glval) = FunctionAddress[g_printerr] : +# 988| r988_3(glval) = StringConstant["Error becoming real+effective uid %d and gid %d: %s\n"] : +# 988| r988_4(char *) = Convert : r988_3 +# 988| r988_5(char *) = Convert : r988_4 +# 988| r988_6(glval) = VariableAddress[pw] : +# 988| r988_7(passwd *) = Load[pw] : &:r988_6, ~m988_1 +# 988| r988_8(glval) = FieldAddress[pw_uid] : r988_7 +# 988| r988_9(unsigned int) = Load[?] : &:r988_8, ~m988_1 +# 988| r988_10(glval) = VariableAddress[pw] : +# 988| r988_11(passwd *) = Load[pw] : &:r988_10, ~m988_1 +# 988| r988_12(glval) = FieldAddress[pw_gid] : r988_11 +# 988| r988_13(unsigned int) = Load[?] : &:r988_12, ~m988_1 +# 988| r988_14(glval) = FunctionAddress[g_strerror] : +# 988| r988_15(glval) = FunctionAddress[__errno_location] : +# 988| r988_16(int *) = Call[__errno_location] : func:r988_15 +# 988| m988_17(unknown) = ^CallSideEffect : ~m988_1 +# 988| m988_18(unknown) = Chi : total:m988_1, partial:m988_17 +# 988| r988_19(int) = Load[?] : &:r988_16, ~m988_18 +# 988| r988_20(char *) = Call[g_strerror] : func:r988_14, 0:r988_19 +# 988| m988_21(unknown) = ^CallSideEffect : ~m988_18 +# 988| m988_22(unknown) = Chi : total:m988_18, partial:m988_21 +# 988| v988_23(void) = Call[g_printerr] : func:r988_2, 0:r988_5, 1:r988_9, 2:r988_13, 3:r988_20 +# 988| m988_24(unknown) = ^CallSideEffect : ~m988_22 +# 988| m988_25(unknown) = Chi : total:m988_22, partial:m988_24 +# 988| v988_26(void) = ^BufferReadSideEffect[0] : &:r988_5, ~m435_3 +# 988| v988_27(void) = ^BufferReadSideEffect[3] : &:r988_20, ~m988_25 +# 988| m988_28(unknown) = ^BufferMayWriteSideEffect[3] : &:r988_20 +# 988| m988_29(unknown) = Chi : total:m988_25, partial:m988_28 +# 989| v989_1(void) = NoOp : +#-----| Goto -> Block 184 + +# 993| Block 179 +# 993| r993_1(glval) = FunctionAddress[chdir] : +# 993| r993_2(glval) = VariableAddress[pw] : +# 993| r993_3(passwd *) = Load[pw] : &:r993_2, ~m986_14 +# 993| r993_4(glval) = FieldAddress[pw_dir] : r993_3 +# 993| r993_5(char *) = Load[?] : &:r993_4, ~m986_14 +# 993| r993_6(char *) = Convert : r993_5 +# 993| r993_7(int) = Call[chdir] : func:r993_1, 0:r993_6 +# 993| m993_8(unknown) = ^CallSideEffect : ~m986_14 +# 993| m993_9(unknown) = Chi : total:m986_14, partial:m993_8 +# 993| v993_10(void) = ^BufferReadSideEffect[0] : &:r993_6, ~m993_9 +# 993| r993_11(int) = Constant[0] : +# 993| r993_12(int) = CompareNE : r993_7, r993_11 +# 993| v993_13(void) = ConditionalBranch : r993_12 +#-----| False -> Block 181 +#-----| True -> Block 180 + +# 995| Block 180 +# 995| r995_1(glval) = FunctionAddress[g_printerr] : +# 995| r995_2(glval) = StringConstant["Error changing to home directory %s: %s\n"] : +# 995| r995_3(char *) = Convert : r995_2 +# 995| r995_4(char *) = Convert : r995_3 +# 995| r995_5(glval) = VariableAddress[pw] : +# 995| r995_6(passwd *) = Load[pw] : &:r995_5, ~m993_9 +# 995| r995_7(glval) = FieldAddress[pw_dir] : r995_6 +# 995| r995_8(char *) = Load[?] : &:r995_7, ~m993_9 +# 995| r995_9(glval) = FunctionAddress[g_strerror] : +# 995| r995_10(glval) = FunctionAddress[__errno_location] : +# 995| r995_11(int *) = Call[__errno_location] : func:r995_10 +# 995| m995_12(unknown) = ^CallSideEffect : ~m993_9 +# 995| m995_13(unknown) = Chi : total:m993_9, partial:m995_12 +# 995| r995_14(int) = Load[?] : &:r995_11, ~m995_13 +# 995| r995_15(char *) = Call[g_strerror] : func:r995_9, 0:r995_14 +# 995| m995_16(unknown) = ^CallSideEffect : ~m995_13 +# 995| m995_17(unknown) = Chi : total:m995_13, partial:m995_16 +# 995| v995_18(void) = Call[g_printerr] : func:r995_1, 0:r995_4, 1:r995_8, 2:r995_15 +# 995| m995_19(unknown) = ^CallSideEffect : ~m995_17 +# 995| m995_20(unknown) = Chi : total:m995_17, partial:m995_19 +# 995| v995_21(void) = ^BufferReadSideEffect[0] : &:r995_4, ~m435_3 +# 995| v995_22(void) = ^BufferReadSideEffect[1] : &:r995_8, ~m995_20 +# 995| v995_23(void) = ^BufferReadSideEffect[2] : &:r995_15, ~m995_20 +# 995| m995_24(unknown) = ^BufferMayWriteSideEffect[1] : &:r995_8 +# 995| m995_25(unknown) = Chi : total:m995_20, partial:m995_24 +# 995| m995_26(unknown) = ^BufferMayWriteSideEffect[2] : &:r995_15 +# 995| m995_27(unknown) = Chi : total:m995_25, partial:m995_26 +# 996| v996_1(void) = NoOp : +#-----| Goto -> Block 184 + +# 1000| Block 181 +# 1000| r1000_1(glval) = FunctionAddress[log_message] : +# 1000| r1000_2(int) = Constant[5] : +# 1000| r1000_3(int) = Constant[0] : +# 1000| r1000_4(glval) = StringConstant["Executing command"] : +# 1000| r1000_5(char *) = Convert : r1000_4 +# 1000| r1000_6(char *) = Convert : r1000_5 +# 1000| v1000_7(void) = Call[log_message] : func:r1000_1, 0:r1000_2, 1:r1000_3, 2:r1000_6 +# 1000| m1000_8(unknown) = ^CallSideEffect : ~m993_9 +# 1000| m1000_9(unknown) = Chi : total:m993_9, partial:m1000_8 +# 1000| v1000_10(void) = ^BufferReadSideEffect[2] : &:r1000_6, ~m435_3 +# 1003| r1003_1(glval) = FunctionAddress[execv] : +# 1003| r1003_2(glval) = VariableAddress[path] : +# 1003| r1003_3(char *) = Load[path] : &:r1003_2, m641_3 +# 1003| r1003_4(char *) = Convert : r1003_3 +# 1003| r1003_5(glval) = VariableAddress[exec_argv] : +# 1003| r1003_6(char **) = Load[exec_argv] : &:r1003_5, m656_3 +# 1003| r1003_7(char **) = Convert : r1003_6 +# 1003| r1003_8(int) = Call[execv] : func:r1003_1, 0:r1003_4, 1:r1003_7 +# 1003| m1003_9(unknown) = ^CallSideEffect : ~m1000_9 +# 1003| m1003_10(unknown) = Chi : total:m1000_9, partial:m1003_9 +# 1003| v1003_11(void) = ^BufferReadSideEffect[0] : &:r1003_4, ~m1003_10 +# 1003| v1003_12(void) = ^BufferReadSideEffect[1] : &:r1003_7, ~m1003_10 +# 1003| m1003_13(unknown) = ^BufferMayWriteSideEffect[1] : &:r1003_7 +# 1003| m1003_14(unknown) = Chi : total:m1003_10, partial:m1003_13 +# 1003| r1003_15(int) = Constant[0] : +# 1003| r1003_16(int) = CompareNE : r1003_8, r1003_15 +# 1003| v1003_17(void) = ConditionalBranch : r1003_16 +#-----| False -> Block 183 +#-----| True -> Block 182 + +# 1005| Block 182 +# 1005| r1005_1(glval) = FunctionAddress[g_printerr] : +# 1005| r1005_2(glval) = StringConstant["Error executing %s: %s\n"] : +# 1005| r1005_3(char *) = Convert : r1005_2 +# 1005| r1005_4(char *) = Convert : r1005_3 +# 1005| r1005_5(glval) = VariableAddress[path] : +# 1005| r1005_6(char *) = Load[path] : &:r1005_5, m641_3 +# 1005| r1005_7(glval) = FunctionAddress[g_strerror] : +# 1005| r1005_8(glval) = FunctionAddress[__errno_location] : +# 1005| r1005_9(int *) = Call[__errno_location] : func:r1005_8 +# 1005| m1005_10(unknown) = ^CallSideEffect : ~m1003_14 +# 1005| m1005_11(unknown) = Chi : total:m1003_14, partial:m1005_10 +# 1005| r1005_12(int) = Load[?] : &:r1005_9, ~m1005_11 +# 1005| r1005_13(char *) = Call[g_strerror] : func:r1005_7, 0:r1005_12 +# 1005| m1005_14(unknown) = ^CallSideEffect : ~m1005_11 +# 1005| m1005_15(unknown) = Chi : total:m1005_11, partial:m1005_14 +# 1005| v1005_16(void) = Call[g_printerr] : func:r1005_1, 0:r1005_4, 1:r1005_6, 2:r1005_13 +# 1005| m1005_17(unknown) = ^CallSideEffect : ~m1005_15 +# 1005| m1005_18(unknown) = Chi : total:m1005_15, partial:m1005_17 +# 1005| v1005_19(void) = ^BufferReadSideEffect[0] : &:r1005_4, ~m435_3 +# 1005| v1005_20(void) = ^BufferReadSideEffect[1] : &:r1005_6, ~m1005_18 +# 1005| v1005_21(void) = ^BufferReadSideEffect[2] : &:r1005_13, ~m1005_18 +# 1005| m1005_22(unknown) = ^BufferMayWriteSideEffect[1] : &:r1005_6 +# 1005| m1005_23(unknown) = Chi : total:m1005_18, partial:m1005_22 +# 1005| m1005_24(unknown) = ^BufferMayWriteSideEffect[2] : &:r1005_13 +# 1005| m1005_25(unknown) = Chi : total:m1005_23, partial:m1005_24 +# 1006| v1006_1(void) = NoOp : +#-----| Goto -> Block 184 + +# 1010| Block 183 +# 1010| r1010_1(glval) = FunctionAddress[g_assertion_message_expr] : +# 1010| r1010_2(char *) = Constant[0] : +# 1010| r1010_3(glval) = StringConstant[../src/programs/pkexec.c] : +# 1010| r1010_4(char *) = Convert : r1010_3 +# 1010| r1010_5(char *) = Convert : r1010_4 +# 1010| r1010_6(int) = Constant[1010] : +# 1010| r1010_7(glval) = VariableAddress : +# 1010| r1010_8(char *) = Convert : r1010_7 +# 1010| r1010_9(char *) = Convert : r1010_8 +# 1010| r1010_10(char *) = Constant[0] : +# 1010| v1010_11(void) = Call[g_assertion_message_expr] : func:r1010_1, 0:r1010_2, 1:r1010_5, 2:r1010_6, 3:r1010_9, 4:r1010_10 +# 1010| m1010_12(unknown) = ^CallSideEffect : ~m1003_14 +# 1010| m1010_13(unknown) = Chi : total:m1003_14, partial:m1010_12 +# 1010| v1010_14(void) = ^BufferReadSideEffect[0] : &:r1010_2, ~m1010_13 +# 1010| v1010_15(void) = ^BufferReadSideEffect[1] : &:r1010_5, ~m435_3 +# 1010| v1010_16(void) = ^BufferReadSideEffect[3] : &:r1010_9, ~m1010_13 +# 1010| v1010_17(void) = ^BufferReadSideEffect[4] : &:r1010_10, ~m1010_13 +# 1010| r1010_18(int) = Constant[0] : +# 1010| v1010_19(void) = ConditionalBranch : r1010_18 +#-----| False -> Block 184 +#-----| True -> Block 197 + +# 1012| Block 184 +# 1012| m1012_1(unknown) = Phi : from 1:m435_10, from 3:m435_10, from 5:m435_10, from 16:m549_11, from 18:m435_10, from 24:m572_11, from 26:m435_10, from 31:m435_10, from 33:m435_10, from 43:m435_10, from 47:m435_10, from 50:m641_1, from 58:m656_1, from 67:m656_1, from 69:m656_1, from 71:m656_1, from 101:m656_1, from 135:m656_1, from 142:m656_1, from 144:m656_1, from 146:m656_1, from 150:m656_1, from 160:m656_1, from 163:m656_1, from 167:m656_1, from 169:m656_1, from 171:m656_1, from 173:m656_1, from 178:m656_1, from 180:m656_1, from 182:m656_1, from 183:m656_1 +# 1012| m1012_2(unknown) = Phi : from 1:~m510_7, from 3:~m517_7, from 5:~m524_12, from 16:~m549_8, from 18:~m555_7, from 24:~m572_8, from 26:~m578_13, from 31:~m592_13, from 33:~m597_22, from 43:~m618_7, from 47:~m635_21, from 50:~m643_25, from 58:~m670_8, from 67:~m704_20, from 69:~m712_20, from 71:~m726_7, from 101:~m757_9, from 135:~m818_7, from 142:~m837_9, from 144:~m850_9, from 146:~m859_7, from 150:~m878_1, from 160:~m915_12, from 163:~m923_7, from 167:~m933_21, from 169:~m965_10, from 171:~m975_20, from 173:~m980_27, from 178:~m988_29, from 180:~m995_27, from 182:~m1005_25, from 183:~m1010_13 +# 1012| m1012_3(_PolkitSubject *) = Phi : from 1:m493_3, from 3:m493_3, from 5:m493_3, from 16:m493_3, from 18:m493_3, from 24:m493_3, from 26:m493_3, from 31:m493_3, from 33:m493_3, from 43:m493_3, from 47:m493_3, from 50:m493_3, from 58:m493_3, from 67:m493_3, from 69:m493_3, from 71:m493_3, from 101:m743_8, from 135:m743_8, from 142:m743_8, from 144:m743_8, from 146:m743_8, from 150:m743_8, from 160:m743_8, from 163:m743_8, from 167:m743_8, from 169:m743_8, from 171:m743_8, from 173:m743_8, from 178:m743_8, from 180:m743_8, from 182:m743_8, from 183:m743_8 +# 1012| m1012_4(_GPtrArray *) = Phi : from 1:m497_3, from 3:m497_3, from 5:m497_3, from 16:m497_3, from 18:m497_3, from 24:m497_3, from 26:m497_3, from 31:m497_3, from 33:m497_3, from 43:m497_3, from 47:m497_3, from 50:m497_3, from 58:m656_9, from 67:m656_9, from 69:m656_9, from 71:m656_9, from 101:m656_9, from 135:m656_9, from 142:m656_9, from 144:m656_9, from 146:m656_9, from 150:m656_9, from 160:m656_9, from 163:m656_9, from 167:m656_9, from 169:m656_9, from 171:m656_9, from 173:m656_9, from 178:m656_9, from 180:m656_9, from 182:m656_9, from 183:m656_9 +# 1012| m1012_5(unsigned int) = Phi : from 1:m491_3, from 3:m491_3, from 5:m491_3, from 16:m491_3, from 18:m491_3, from 24:m573_3, from 26:m579_3, from 31:m491_3, from 33:m491_3, from 43:m491_3, from 47:m491_3, from 50:m491_3, from 58:m491_3, from 67:m491_3, from 69:m491_3, from 71:m491_3, from 101:m491_3, from 135:m491_3, from 142:m491_3, from 144:m491_3, from 146:m491_3, from 150:m878_2, from 160:m491_3, from 163:m491_3, from 167:m491_3, from 169:m491_3, from 171:m491_3, from 173:m491_3, from 178:m491_3, from 180:m491_3, from 182:m491_3, from 183:m491_3 +# 1012| m1012_6(_PolkitAuthorizationResult *) = Phi : from 1:m495_3, from 3:m495_3, from 5:m495_3, from 16:m495_3, from 18:m495_3, from 24:m495_3, from 26:m495_3, from 31:m495_3, from 33:m495_3, from 43:m495_3, from 47:m495_3, from 50:m495_3, from 58:m495_3, from 67:m495_3, from 69:m495_3, from 71:m495_3, from 101:m495_3, from 135:m807_11, from 142:m807_11, from 144:m807_11, from 146:m807_11, from 150:m807_11, from 160:m807_11, from 163:m807_11, from 167:m807_11, from 169:m807_11, from 171:m807_11, from 173:m807_11, from 178:m807_11, from 180:m807_11, from 182:m807_11, from 183:m807_11 +# 1012| m1012_7(char *) = Phi : from 1:m498_3, from 3:m498_3, from 5:m498_3, from 16:m498_3, from 18:m498_3, from 24:m498_3, from 26:m498_3, from 31:m498_3, from 33:m498_3, from 43:m615_11, from 47:m629_2, from 50:m641_3, from 58:m641_3, from 67:m641_3, from 69:m641_3, from 71:m641_3, from 101:m641_3, from 135:m641_3, from 142:m641_3, from 144:m641_3, from 146:m641_3, from 150:m641_3, from 160:m641_3, from 163:m641_3, from 167:m641_3, from 169:m641_3, from 171:m641_3, from 173:m641_3, from 178:m641_3, from 180:m641_3, from 182:m641_3, from 183:m641_3 +# 1012| m1012_8(char *) = Phi : from 1:m501_3, from 3:m501_3, from 5:m501_3, from 16:m534_5, from 18:m534_5, from 24:m534_5, from 26:m534_5, from 31:m589_2, from 33:m589_2, from 43:m589_2, from 47:m589_2, from 50:m589_2, from 58:m589_2, from 67:m589_2, from 69:m589_2, from 71:m589_2, from 101:m589_2, from 135:m589_2, from 142:m589_2, from 144:m589_2, from 146:m589_2, from 150:m589_2, from 160:m589_2, from 163:m589_2, from 167:m589_2, from 169:m589_2, from 171:m589_2, from 173:m589_2, from 178:m589_2, from 180:m589_2, from 182:m589_2, from 183:m589_2 +# 1012| m1012_9(void *) = Phi : from 1:m502_3, from 3:m502_3, from 5:m502_3, from 16:m502_3, from 18:m502_3, from 24:m502_3, from 26:m502_3, from 31:m502_3, from 33:m502_3, from 43:m502_3, from 47:m502_3, from 50:m502_3, from 58:m502_3, from 67:m502_3, from 69:m502_3, from 71:m502_3, from 101:m502_3, from 135:m805_2, from 142:m805_2, from 144:m840_11, from 146:m805_2, from 150:m805_2, from 160:m805_2, from 163:m805_2, from 167:m805_2, from 169:m805_2, from 171:m805_2, from 173:m805_2, from 178:m805_2, from 180:m805_2, from 182:m805_2, from 183:m805_2 +# 1012| m1012_10(_PolkitDetails *) = Phi : from 1:m494_3, from 3:m494_3, from 5:m494_3, from 16:m494_3, from 18:m494_3, from 24:m494_3, from 26:m494_3, from 31:m494_3, from 33:m494_3, from 43:m494_3, from 47:m494_3, from 50:m494_3, from 58:m494_3, from 67:m494_3, from 69:m494_3, from 71:m494_3, from 101:m494_3, from 135:m769_6, from 142:m769_6, from 144:m769_6, from 146:m769_6, from 150:m769_6, from 160:m769_6, from 163:m769_6, from 167:m769_6, from 169:m769_6, from 171:m769_6, from 173:m769_6, from 178:m769_6, from 180:m769_6, from 182:m769_6, from 183:m769_6 +# 1012| m1012_11(_PolkitAuthority *) = Phi : from 1:m492_3, from 3:m492_3, from 5:m492_3, from 16:m492_3, from 18:m492_3, from 24:m492_3, from 26:m492_3, from 31:m492_3, from 33:m492_3, from 43:m492_3, from 47:m492_3, from 50:m492_3, from 58:m492_3, from 67:m492_3, from 69:m492_3, from 71:m492_3, from 101:m753_15, from 135:m753_15, from 142:m753_15, from 144:m753_15, from 146:m753_15, from 150:m753_15, from 160:m753_15, from 163:m753_15, from 167:m753_15, from 169:m753_15, from 171:m753_15, from 173:m753_15, from 178:m753_15, from 180:m753_15, from 182:m753_15, from 183:m753_15 +# 1012| m1012_12(char *) = Phi : from 1:m496_3, from 3:m496_3, from 5:m496_3, from 16:m496_3, from 18:m496_3, from 24:m496_3, from 26:m496_3, from 31:m496_3, from 33:m496_3, from 43:m496_3, from 47:m496_3, from 50:m496_3, from 58:m496_3, from 67:m496_3, from 69:m496_3, from 71:m496_3, from 101:m496_3, from 135:m763_11, from 142:m763_11, from 144:m763_11, from 146:m763_11, from 150:m763_11, from 160:m763_11, from 163:m763_11, from 167:m763_11, from 169:m763_11, from 171:m763_11, from 173:m763_11, from 178:m763_11, from 180:m763_11, from 182:m763_11, from 183:m763_11 +# 1012| v1012_13(void) = NoOp : +# 1014| r1014_1(glval) = VariableAddress[local_agent_handle] : +# 1014| r1014_2(void *) = Load[local_agent_handle] : &:r1014_1, m1012_9 +# 1014| r1014_3(void *) = Constant[0] : +# 1014| r1014_4(int) = CompareNE : r1014_2, r1014_3 +# 1014| v1014_5(void) = ConditionalBranch : r1014_4 +#-----| False -> Block 186 +#-----| True -> Block 185 + +# 1015| Block 185 +# 1015| r1015_1(glval) = FunctionAddress[polkit_agent_listener_unregister] : +# 1015| r1015_2(glval) = VariableAddress[local_agent_handle] : +# 1015| r1015_3(void *) = Load[local_agent_handle] : &:r1015_2, m1012_9 +# 1015| v1015_4(void) = Call[polkit_agent_listener_unregister] : func:r1015_1, 0:r1015_3 +# 1015| m1015_5(unknown) = ^CallSideEffect : ~m1012_2 +# 1015| m1015_6(unknown) = Chi : total:m1012_2, partial:m1015_5 +# 1015| v1015_7(void) = ^BufferReadSideEffect[0] : &:r1015_3, ~m1015_6 +# 1015| m1015_8(unknown) = ^BufferMayWriteSideEffect[0] : &:r1015_3 +# 1015| m1015_9(unknown) = Chi : total:m1015_6, partial:m1015_8 +#-----| Goto -> Block 186 + +# 1017| Block 186 +# 1017| m1017_1(unknown) = Phi : from 184:~m1012_2, from 185:~m1015_9 +# 1017| r1017_2(glval<_PolkitAuthorizationResult *>) = VariableAddress[result] : +# 1017| r1017_3(_PolkitAuthorizationResult *) = Load[result] : &:r1017_2, m1012_6 +# 1017| r1017_4(_PolkitAuthorizationResult *) = Constant[0] : +# 1017| r1017_5(int) = CompareNE : r1017_3, r1017_4 +# 1017| v1017_6(void) = ConditionalBranch : r1017_5 +#-----| False -> Block 188 +#-----| True -> Block 187 + +# 1018| Block 187 +# 1018| r1018_1(glval) = FunctionAddress[g_object_unref] : +# 1018| r1018_2(glval<_PolkitAuthorizationResult *>) = VariableAddress[result] : +# 1018| r1018_3(_PolkitAuthorizationResult *) = Load[result] : &:r1018_2, m1012_6 +# 1018| r1018_4(void *) = Convert : r1018_3 +# 1018| v1018_5(void) = Call[g_object_unref] : func:r1018_1, 0:r1018_4 +# 1018| m1018_6(unknown) = ^CallSideEffect : ~m1017_1 +# 1018| m1018_7(unknown) = Chi : total:m1017_1, partial:m1018_6 +# 1018| v1018_8(void) = ^BufferReadSideEffect[0] : &:r1018_4, ~m1018_7 +# 1018| m1018_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r1018_4 +# 1018| m1018_10(unknown) = Chi : total:m1018_7, partial:m1018_9 +#-----| Goto -> Block 188 + +# 1020| Block 188 +# 1020| m1020_1(unknown) = Phi : from 186:~m1017_1, from 187:~m1018_10 +# 1020| r1020_2(glval) = FunctionAddress[g_free] : +# 1020| r1020_3(glval) = VariableAddress[action_id] : +# 1020| r1020_4(char *) = Load[action_id] : &:r1020_3, m1012_12 +# 1020| r1020_5(void *) = Convert : r1020_4 +# 1020| v1020_6(void) = Call[g_free] : func:r1020_2, 0:r1020_5 +# 1020| m1020_7(unknown) = ^CallSideEffect : ~m1020_1 +# 1020| m1020_8(unknown) = Chi : total:m1020_1, partial:m1020_7 +# 1020| v1020_9(void) = ^BufferReadSideEffect[0] : &:r1020_5, ~m1020_8 +# 1020| m1020_10(unknown) = ^BufferMayWriteSideEffect[0] : &:r1020_5 +# 1020| m1020_11(unknown) = Chi : total:m1020_8, partial:m1020_10 +# 1022| r1022_1(glval<_PolkitDetails *>) = VariableAddress[details] : +# 1022| r1022_2(_PolkitDetails *) = Load[details] : &:r1022_1, m1012_10 +# 1022| r1022_3(_PolkitDetails *) = Constant[0] : +# 1022| r1022_4(int) = CompareNE : r1022_2, r1022_3 +# 1022| v1022_5(void) = ConditionalBranch : r1022_4 +#-----| False -> Block 190 +#-----| True -> Block 189 + +# 1023| Block 189 +# 1023| r1023_1(glval) = FunctionAddress[g_object_unref] : +# 1023| r1023_2(glval<_PolkitDetails *>) = VariableAddress[details] : +# 1023| r1023_3(_PolkitDetails *) = Load[details] : &:r1023_2, m1012_10 +# 1023| r1023_4(void *) = Convert : r1023_3 +# 1023| v1023_5(void) = Call[g_object_unref] : func:r1023_1, 0:r1023_4 +# 1023| m1023_6(unknown) = ^CallSideEffect : ~m1020_11 +# 1023| m1023_7(unknown) = Chi : total:m1020_11, partial:m1023_6 +# 1023| v1023_8(void) = ^BufferReadSideEffect[0] : &:r1023_4, ~m1023_7 +# 1023| m1023_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r1023_4 +# 1023| m1023_10(unknown) = Chi : total:m1023_7, partial:m1023_9 +#-----| Goto -> Block 190 + +# 1025| Block 190 +# 1025| m1025_1(unknown) = Phi : from 188:~m1020_11, from 189:~m1023_10 +# 1025| r1025_2(glval<_PolkitSubject *>) = VariableAddress[subject] : +# 1025| r1025_3(_PolkitSubject *) = Load[subject] : &:r1025_2, m1012_3 +# 1025| r1025_4(_PolkitSubject *) = Constant[0] : +# 1025| r1025_5(int) = CompareNE : r1025_3, r1025_4 +# 1025| v1025_6(void) = ConditionalBranch : r1025_5 +#-----| False -> Block 192 +#-----| True -> Block 191 + +# 1026| Block 191 +# 1026| r1026_1(glval) = FunctionAddress[g_object_unref] : +# 1026| r1026_2(glval<_PolkitSubject *>) = VariableAddress[subject] : +# 1026| r1026_3(_PolkitSubject *) = Load[subject] : &:r1026_2, m1012_3 +# 1026| r1026_4(void *) = Convert : r1026_3 +# 1026| v1026_5(void) = Call[g_object_unref] : func:r1026_1, 0:r1026_4 +# 1026| m1026_6(unknown) = ^CallSideEffect : ~m1025_1 +# 1026| m1026_7(unknown) = Chi : total:m1025_1, partial:m1026_6 +# 1026| v1026_8(void) = ^BufferReadSideEffect[0] : &:r1026_4, ~m1026_7 +# 1026| m1026_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r1026_4 +# 1026| m1026_10(unknown) = Chi : total:m1026_7, partial:m1026_9 +#-----| Goto -> Block 192 + +# 1028| Block 192 +# 1028| m1028_1(unknown) = Phi : from 190:~m1025_1, from 191:~m1026_10 +# 1028| r1028_2(glval<_PolkitAuthority *>) = VariableAddress[authority] : +# 1028| r1028_3(_PolkitAuthority *) = Load[authority] : &:r1028_2, m1012_11 +# 1028| r1028_4(_PolkitAuthority *) = Constant[0] : +# 1028| r1028_5(int) = CompareNE : r1028_3, r1028_4 +# 1028| v1028_6(void) = ConditionalBranch : r1028_5 +#-----| False -> Block 194 +#-----| True -> Block 193 + +# 1029| Block 193 +# 1029| r1029_1(glval) = FunctionAddress[g_object_unref] : +# 1029| r1029_2(glval<_PolkitAuthority *>) = VariableAddress[authority] : +# 1029| r1029_3(_PolkitAuthority *) = Load[authority] : &:r1029_2, m1012_11 +# 1029| r1029_4(void *) = Convert : r1029_3 +# 1029| v1029_5(void) = Call[g_object_unref] : func:r1029_1, 0:r1029_4 +# 1029| m1029_6(unknown) = ^CallSideEffect : ~m1028_1 +# 1029| m1029_7(unknown) = Chi : total:m1028_1, partial:m1029_6 +# 1029| v1029_8(void) = ^BufferReadSideEffect[0] : &:r1029_4, ~m1029_7 +# 1029| m1029_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r1029_4 +# 1029| m1029_10(unknown) = Chi : total:m1029_7, partial:m1029_9 +#-----| Goto -> Block 194 + +# 1031| Block 194 +# 1031| m1031_1(unknown) = Phi : from 192:~m1028_1, from 193:~m1029_10 +# 1031| r1031_2(glval<_GPtrArray *>) = VariableAddress[saved_env] : +# 1031| r1031_3(_GPtrArray *) = Load[saved_env] : &:r1031_2, m1012_4 +# 1031| r1031_4(_GPtrArray *) = Constant[0] : +# 1031| r1031_5(int) = CompareNE : r1031_3, r1031_4 +# 1031| v1031_6(void) = ConditionalBranch : r1031_5 +#-----| False -> Block 196 +#-----| True -> Block 195 + +# 1033| Block 195 +# 1033| r1033_1(glval) = FunctionAddress[g_ptr_array_foreach] : +# 1033| r1033_2(glval<_GPtrArray *>) = VariableAddress[saved_env] : +# 1033| r1033_3(_GPtrArray *) = Load[saved_env] : &:r1033_2, m1012_4 +# 1033| r1033_4(..(*)(..)) = FunctionAddress[g_free] : +# 1033| r1033_5(..(*)(..)) = Convert : r1033_4 +# 1033| r1033_6(void *) = Constant[0] : +# 1033| v1033_7(void) = Call[g_ptr_array_foreach] : func:r1033_1, 0:r1033_3, 1:r1033_5, 2:r1033_6 +# 1033| m1033_8(unknown) = ^CallSideEffect : ~m1031_1 +# 1033| m1033_9(unknown) = Chi : total:m1031_1, partial:m1033_8 +# 1033| v1033_10(void) = ^BufferReadSideEffect[0] : &:r1033_3, ~m1033_9 +# 1033| v1033_11(void) = ^BufferReadSideEffect[2] : &:r1033_6, ~m1033_9 +# 1033| m1033_12(unknown) = ^BufferMayWriteSideEffect[0] : &:r1033_3 +# 1033| m1033_13(unknown) = Chi : total:m1033_9, partial:m1033_12 +# 1033| m1033_14(unknown) = ^BufferMayWriteSideEffect[2] : &:r1033_6 +# 1033| m1033_15(unknown) = Chi : total:m1033_13, partial:m1033_14 +# 1034| r1034_1(glval) = FunctionAddress[g_ptr_array_free] : +# 1034| r1034_2(glval<_GPtrArray *>) = VariableAddress[saved_env] : +# 1034| r1034_3(_GPtrArray *) = Load[saved_env] : &:r1034_2, m1012_4 +# 1034| r1034_4(int) = Constant[1] : +# 1034| r1034_5(void **) = Call[g_ptr_array_free] : func:r1034_1, 0:r1034_3, 1:r1034_4 +# 1034| m1034_6(unknown) = ^CallSideEffect : ~m1033_15 +# 1034| m1034_7(unknown) = Chi : total:m1033_15, partial:m1034_6 +# 1034| v1034_8(void) = ^BufferReadSideEffect[0] : &:r1034_3, ~m1034_7 +# 1034| m1034_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r1034_3 +# 1034| m1034_10(unknown) = Chi : total:m1034_7, partial:m1034_9 +#-----| Goto -> Block 196 + +# 1037| Block 196 +# 1037| m1037_1(unknown) = Phi : from 194:~m1031_1, from 195:~m1034_10 +# 1037| r1037_2(glval) = FunctionAddress[g_free] : +# 1037| r1037_3(glval) = VariableAddress[original_cwd] : +# 1037| r1037_4(char *) = Load[original_cwd] : &:r1037_3, ~m1037_1 +# 1037| r1037_5(void *) = Convert : r1037_4 +# 1037| v1037_6(void) = Call[g_free] : func:r1037_2, 0:r1037_5 +# 1037| m1037_7(unknown) = ^CallSideEffect : ~m1037_1 +# 1037| m1037_8(unknown) = Chi : total:m1037_1, partial:m1037_7 +# 1037| v1037_9(void) = ^BufferReadSideEffect[0] : &:r1037_5, ~m1037_8 +# 1037| m1037_10(unknown) = ^BufferMayWriteSideEffect[0] : &:r1037_5 +# 1037| m1037_11(unknown) = Chi : total:m1037_8, partial:m1037_10 +# 1038| r1038_1(glval) = FunctionAddress[g_free] : +# 1038| r1038_2(glval) = VariableAddress[path] : +# 1038| r1038_3(char *) = Load[path] : &:r1038_2, m1012_7 +# 1038| r1038_4(void *) = Convert : r1038_3 +# 1038| v1038_5(void) = Call[g_free] : func:r1038_1, 0:r1038_4 +# 1038| m1038_6(unknown) = ^CallSideEffect : ~m1037_11 +# 1038| m1038_7(unknown) = Chi : total:m1037_11, partial:m1038_6 +# 1038| v1038_8(void) = ^BufferReadSideEffect[0] : &:r1038_4, ~m1038_7 +# 1038| m1038_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r1038_4 +# 1038| m1038_10(unknown) = Chi : total:m1038_7, partial:m1038_9 +# 1039| r1039_1(glval) = FunctionAddress[g_free] : +# 1039| r1039_2(glval) = VariableAddress[command_line] : +# 1039| r1039_3(char *) = Load[command_line] : &:r1039_2, ~m1038_10 +# 1039| r1039_4(void *) = Convert : r1039_3 +# 1039| v1039_5(void) = Call[g_free] : func:r1039_1, 0:r1039_4 +# 1039| m1039_6(unknown) = ^CallSideEffect : ~m1038_10 +# 1039| m1039_7(unknown) = Chi : total:m1038_10, partial:m1039_6 +# 1039| v1039_8(void) = ^BufferReadSideEffect[0] : &:r1039_4, ~m1039_7 +# 1039| m1039_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r1039_4 +# 1039| m1039_10(unknown) = Chi : total:m1039_7, partial:m1039_9 +# 1040| r1040_1(glval) = FunctionAddress[g_free] : +# 1040| r1040_2(glval) = VariableAddress[opt_user] : +# 1040| r1040_3(char *) = Load[opt_user] : &:r1040_2, m1012_8 +# 1040| r1040_4(void *) = Convert : r1040_3 +# 1040| v1040_5(void) = Call[g_free] : func:r1040_1, 0:r1040_4 +# 1040| m1040_6(unknown) = ^CallSideEffect : ~m1039_10 +# 1040| m1040_7(unknown) = Chi : total:m1039_10, partial:m1040_6 +# 1040| v1040_8(void) = ^BufferReadSideEffect[0] : &:r1040_4, ~m1040_7 +# 1040| m1040_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r1040_4 +# 1040| m1040_10(unknown) = Chi : total:m1040_7, partial:m1040_9 +# 1041| r1041_1(glval) = FunctionAddress[g_free] : +# 1041| r1041_2(glval) = VariableAddress[original_user_name] : +# 1041| r1041_3(char *) = Load[original_user_name] : &:r1041_2, ~m1040_10 +# 1041| r1041_4(void *) = Convert : r1041_3 +# 1041| v1041_5(void) = Call[g_free] : func:r1041_1, 0:r1041_4 +# 1041| m1041_6(unknown) = ^CallSideEffect : ~m1040_10 +# 1041| m1041_7(unknown) = Chi : total:m1040_10, partial:m1041_6 +# 1041| v1041_8(void) = ^BufferReadSideEffect[0] : &:r1041_4, ~m1041_7 +# 1041| m1041_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r1041_4 +# 1041| m1041_10(unknown) = Chi : total:m1041_7, partial:m1041_9 +# 1043| r1043_1(glval) = VariableAddress[#return] : +# 1043| r1043_2(glval) = VariableAddress[ret] : +# 1043| r1043_3(unsigned int) = Load[ret] : &:r1043_2, m1012_5 +# 1043| r1043_4(int) = Convert : r1043_3 +# 1043| m1043_5(int) = Store[#return] : &:r1043_1, r1043_4 +# 435| v435_11(void) = ReturnIndirection[argv] : &:r435_9, m1012_1 +# 435| r435_12(glval) = VariableAddress[#return] : +# 435| v435_13(void) = ReturnValue : &:r435_12, m1043_5 +# 435| v435_14(void) = AliasedUse : ~m1041_10 +# 435| v435_15(void) = ExitFunction : + +# 435| Block 197 +# 435| v435_16(void) = Unreached : diff --git a/PrintIR-pkexec.ql b/PrintIR-pkexec.ql new file mode 100644 index 0000000..59724ec --- /dev/null +++ b/PrintIR-pkexec.ql @@ -0,0 +1,29 @@ +/** + * @name Print Aliased SSA IR + * @description Outputs a representation of the Aliased SSA IR graph + * @id cpp/example/polkit-ir + * @kind graph + */ + +// From PrintIR.qll: +// ... For most uses, however, it is better to write a query +// that imports `PrintIR.qll`, +// extends `PrintIRConfiguration`, +// and overrides `shouldPrintFunction()` to select a subset of functions to dump. + +import semmle.code.cpp.ir.PrintIR +import semmle.code.cpp.ir.internal.IRCppLanguage as Language + +class PkexecMainConfig extends PrintIRConfiguration { + /** Gets a textual representation of this configuration. */ + override string toString() { result = "PkexecMainConfig" } + + /** + * Holds if the IR for `func` should be printed. By default, holds for all + * functions. + */ + override predicate shouldPrintFunction(Language::Function func) { + func.getName() = "main" and + func.getLocation().getFile().getBaseName() = "pkexec.c" + } +} diff --git a/PrintIR.sh b/PrintIR.sh new file mode 100644 index 0000000..6336ec3 --- /dev/null +++ b/PrintIR.sh @@ -0,0 +1,44 @@ +# +# Print the IR representation of a function +# + +# Add codeql binary PATH +export PATH=$HOME/local/codeql-2.7.6/codeql:"$PATH" + +#* Plain text dump of graph +codeql database analyze \ + ./db/polkit-0.119.db \ + ./PrintIR-pkexec.ql \ + -j8 -v --ram=16000 \ + --search-path $HOME/local/codeql-2.7.6/ql \ + --format=graphtext \ + --output=PrintIR-pkexec.graphtext + +# .txt file +ls PrintIR-pkexec.graphtext/cpp/example/polkit-ir.txt + +#* Full dot graph +cd ~/local/codeql-sample-polkit/ +codeql database analyze \ + ./db/polkit-0.119.db \ + ./PrintIR-pkexec.ql \ + -j8 -v --ram=16000 \ + --search-path $HOME/local/codeql-2.7.6/ql \ + --format=dot \ + --output=PrintIR-pkexec.dot + +# Note: intermediate files are here: + +# Query-produced .bqrs file +ls db/polkit-0.119.db/results/cpp-polkit-argv/ + +# Query-produced .dot file +ls PrintIR-pkexec.dot/cpp/example/polkit-ir.dot + +# Generate SVG +cd ~/local/codeql-sample-polkit/PrintIR-pkexec.dot/cpp/example/ +dot -Tsvg ./polkit-ir.dot > polkit-ir.svg +# +# XX: dot output issue: https://github.slack.com/archives/CPCFXL8P3/p1646270812905149 +# +open -a safari ./print-ast.svg diff --git a/qlpack.yml b/qlpack.yml index 45635fc..2fb177f 100644 --- a/qlpack.yml +++ b/qlpack.yml @@ -1,6 +1,4 @@ +# This format is valid for codeql cli v2.7.6, but changes sometime after. name: cpp-polkit-argv version: 0.0.1 -dependencies: - # This uses the latest version of the codeql/cpp-all library. - # You may want to change to a more precise semver string. - codeql/cpp-all: "*" +libraryPathDependencies: codeql-cpp