{"name": "jsonrpc_print_value", "code": "__int64 __fastcall jsonrpc_print_value ( __int64 @@a1@@ , char @@a2@@ , unsigned int * @@a3@@ ) { int * v3 ; double * v4 ; _DWORD * v5 ; time_t * v6 ; const char * v7 ; int v8 ; const char * v9 ; unsigned int v10 ; const char * v11 ; unsigned int v12 ; void ( * v13 ) ( _QWORD , const char * , ... ) ; __int64 v14 ; unsigned int v15 ; __int64 v16 ; int v17 ; unsigned int v18 ; void ( * v19 ) ( _QWORD , const char * , ... ) ; const char * v20 ; int v21 ; unsigned int v22 ; __int64 result ; _QWORD * v24 ; _QWORD * * v25 ; const char * v26 ; int v27 ; const char * v28 ; unsigned int v29 ; const char * v30 ; unsigned int v31 ; void ( * v32 ) ( _QWORD , const char * , ... ) ; unsigned int v33 ; __int64 v34 ; int v35 ; unsigned int v36 ; void ( * v37 ) ( _QWORD , const char * , ... ) ; const char * v38 ; int v39 ; unsigned int v40 ; __int64 @@v41@@ ; time_t @@timer@@ ; char @@s@@ [ Number ] ; unsigned int @@v44@@ ; unsigned int @@v45@@ ; struct tm * @@tp@@ ; __int64 @@v47@@ ; @@v47@@ = Number L ; switch ( @@a2@@ ) { case String : if ( * @@a3@@ > Number ) { v25 = ( _QWORD * * ) * ( ( _QWORD * ) @@a3@@ + Number ) ; * ( ( _QWORD * ) @@a3@@ + Number ) = v25 + Number ; } else { v25 = ( _QWORD * * ) ( * ( ( _QWORD * ) @@a3@@ + Number ) + * @@a3@@ ) ; * @@a3@@ += Number ; } @@v47@@ = srjson_CreateStr ( * ( _QWORD * ) ( @@a1@@ + Number ) , * * v25 , * ( ( unsigned int * ) * v25 + Number ) ) ; goto LABEL_60 ; case String : if ( * @@a3@@ > Number ) { v5 = ( _DWORD * ) * ( ( _QWORD * ) @@a3@@ + Number ) ; * ( ( _QWORD * ) @@a3@@ + Number ) = v5 + Number ; } else { v5 = ( _DWORD * ) ( * ( ( _QWORD * ) @@a3@@ + Number ) + * @@a3@@ ) ; * @@a3@@ += Number ; } @@v47@@ = srjson_CreateBool ( * ( _QWORD * ) ( @@a1@@ + Number ) , * v5 != Number ) ; goto LABEL_60 ; case String : if ( * @@a3@@ > Number ) { v3 = ( int * ) * ( ( _QWORD * ) @@a3@@ + Number ) ; * ( ( _QWORD * ) @@a3@@ + Number ) = v3 + Number ; } else { v3 = ( int * ) ( * ( ( _QWORD * ) @@a3@@ + Number ) + * @@a3@@ ) ; * @@a3@@ += Number ; } goto LABEL_5 ; case String : if ( @@a3@@ [ Number ] > Number ) { v4 = ( double * ) * ( ( _QWORD * ) @@a3@@ + Number ) ; * ( ( _QWORD * ) @@a3@@ + Number ) = v4 + Number ; } else { v4 = ( double * ) ( * ( ( _QWORD * ) @@a3@@ + Number ) + @@a3@@ [ Number ] ) ; @@a3@@ [ Number ] += Number ; } @@v47@@ = srjson_CreateNumber ( * ( _QWORD * ) ( @@a1@@ + Number ) , * v4 ) ; goto LABEL_60 ; case String : if ( * @@a3@@ > Number ) { v24 = ( _QWORD * ) * ( ( _QWORD * ) @@a3@@ + Number ) ; * ( ( _QWORD * ) @@a3@@ + Number ) = v24 + Number ; } else { v24 = ( _QWORD * ) ( * ( ( _QWORD * ) @@a3@@ + Number ) + * @@a3@@ ) ; * @@a3@@ += Number ; } @@v47@@ = srjson_CreateString ( * ( _QWORD * ) ( @@a1@@ + Number ) , * v24 ) ; goto LABEL_60 ; case String : if ( * @@a3@@ > Number ) { v6 = ( time_t * ) * ( ( _QWORD * ) @@a3@@ + Number ) ; * ( ( _QWORD * ) @@a3@@ + Number ) = v6 + Number ; } else { v6 = ( time_t * ) ( * ( ( _QWORD * ) @@a3@@ + Number ) + * @@a3@@ ) ; * @@a3@@ += Number ; } @@timer@@ = * v6 ; @@tp@@ = gmtime ( & @@timer@@ ) ; if ( strftime ( @@s@@ , Number , String , @@tp@@ ) ) { @@v47@@ = srjson_CreateString ( * ( _QWORD * ) ( @@a1@@ + Number ) , @@s@@ ) ; LABEL_60 : result = @@v47@@ ; } else { if ( ( int ) get_debug_level ( String , Number L ) >= Number && ! dprint_crit ) { @@v45@@ = Number ; ++ dprint_crit ; if ( log_stderr ) { if ( log_color ) dprint_color ( @@v45@@ ) ; if ( log_prefix_val ) { v7 = ( const char * ) * log_prefix_val ; v8 = * ( ( _DWORD * ) log_prefix_val + Number ) ; v9 = ( const char * ) * ( ( _QWORD * ) & log_level_info + Number * ( int ) ( @@v45@@ + Number ) ) ; v10 = my_pid ( ) ; fprintf ( stderr , String , process_no , v10 , v9 , v8 , v7 , String , String ) ; } else { v11 = ( const char * ) * ( ( _QWORD * ) & log_level_info + Number * ( int ) ( @@v45@@ + Number ) ) ; v12 = my_pid ( ) ; fprintf ( stderr , String , process_no , v12 , v11 , String , String ) ; } if ( log_color ) dprint_color_reset ( ) ; } else if ( log_prefix_val ) { v13 = ( void ( * ) ( _QWORD , const char * , ... ) ) km_log_func ; v14 = * log_prefix_val ; v15 = * ( ( _DWORD * ) log_prefix_val + Number ) ; v16 = * ( ( _QWORD * ) & log_level_info + Number * ( int ) ( @@v45@@ + Number ) ) ; v17 = * ( ( _DWORD * ) & log_level_info + Number * ( int ) ( @@v45@@ + Number ) + Number ) ; v18 = get_debug_facility ( String , Number L ) ; v13 ( v17 | v18 , String , v16 , v15 , v14 , String , String ) ; } else { v19 = ( void ( * ) ( _QWORD , const char * , ... ) ) km_log_func ; v20 = ( const char * ) * ( ( _QWORD * ) & log_level_info + Number * ( int ) ( @@v45@@ + Number ) ) ; v21 = * ( ( _DWORD * ) & log_level_info + Number * ( int ) ( @@v45@@ + Number ) + Number ) ; v22 = get_debug_facility ( String , Number L ) ; v19 ( v21 | v22 , String , v20 , String , String ) ; } -- dprint_crit ; } result = Number L ; } return result ; case String : if ( * @@a3@@ > Number ) { v3 = ( int * ) * ( ( _QWORD * ) @@a3@@ + Number ) ; * ( ( _QWORD * ) @@a3@@ + Number ) = v3 + Number ; } else { v3 = ( int * ) ( * ( ( _QWORD * ) @@a3@@ + Number ) + * @@a3@@ ) ; * @@a3@@ += Number ; } LABEL_5 : @@v47@@ = srjson_CreateNumber ( * ( _QWORD * ) ( @@a1@@ + Number ) , ( double ) * v3 ) ; goto LABEL_60 ; default : if ( ( int ) get_debug_level ( String , Number L ) >= Number && ! dprint_crit ) { @@v44@@ = Number ; ++ dprint_crit ; if ( log_stderr ) { if ( log_color ) dprint_color ( @@v44@@ ) ; if ( log_prefix_val ) { v26 = ( const char * ) * log_prefix_val ; v27 = * ( ( _DWORD * ) log_prefix_val + Number ) ; v28 = ( const char * ) * ( ( _QWORD * ) & log_level_info + Number * ( int ) ( @@v44@@ + Number ) ) ; v29 = my_pid ( ) ; fprintf ( stderr , String , process_no , v29 , v28 , v27 , v26 , String , String , ( unsigned int ) @@a2@@ ) ; } else { v30 = ( const char * ) * ( ( _QWORD * ) & log_level_info + Number * ( int ) ( @@v44@@ + Number ) ) ; v31 = my_pid ( ) ; fprintf ( stderr , String , process_no , v31 , v30 , String , String , ( unsigned int ) @@a2@@ ) ; } if ( log_color ) dprint_color_reset ( ) ; } else if ( log_prefix_val ) { v32 = ( void ( * ) ( _QWORD , const char * , ... ) ) km_log_func ; @@v41@@ = * log_prefix_val ; v33 = * ( ( _DWORD * ) log_prefix_val + Number ) ; v34 = * ( ( _QWORD * ) & log_level_info + Number * ( int ) ( @@v44@@ + Number ) ) ; v35 = * ( ( _DWORD * ) & log_level_info + Number * ( int ) ( @@v44@@ + Number ) + Number ) ; v36 = get_debug_facility ( String , Number L ) ; v32 ( v35 | v36 , String , v34 , v33 , @@v41@@ , String , String , ( unsigned int ) @@a2@@ ) ; } else { v37 = ( void ( * ) ( _QWORD , const char * , ... ) ) km_log_func ; v38 = ( const char * ) * ( ( _QWORD * ) & log_level_info + Number * ( int ) ( @@v44@@ + Number ) ) ; v39 = * ( ( _DWORD * ) & log_level_info + Number * ( int ) ( @@v44@@ + Number ) + Number ) ; v40 = get_debug_facility ( String , Number L ) ; v37 ( v39 | v40 , String , v38 , String , String , ( unsigned int ) @@a2@@ ) ; } -- dprint_crit ; } return Number L ; } }", "source": [{"n": "a3", "t": {"T": 3, "t": "unsigned int"}, "location": "r16"}, {"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "char", "s": 1}, "location": "r64"}, {"n": "s", "t": {"T": 2, "n": 1036, "s": 1, "t": "char"}, "location": "s1120"}, {"n": "timer", "t": {"T": 1, "n": "time_t", "s": 8}, "location": "s1128"}, {"n": "v41", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s1168"}, {"n": "v47", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s56"}, {"n": "tp", "t": {"T": 3, "t": "struct tm"}, "location": "s64"}, {"n": "v45", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s68"}, {"n": "v44", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s84"}]}