{"name": "gen_jz_ecx_string", "code": "__int64 __fastcall gen_jz_ecx_string ( __int64 @@a1@@ , __int64 @@a2@@ ) { int @@v3@@ ; unsigned int @@v4@@ ; @@v3@@ = gen_new_label ( ) ; @@v4@@ = gen_new_label ( ) ; gen_op_jnz_ecx ( * ( _DWORD * ) ( @@a1@@ + Number ) , @@v3@@ ) ; gen_set_label ( @@v4@@ ) ; gen_jmp_tb ( @@a1@@ , @@a2@@ , Number L ) ; gen_set_label ( @@v3@@ ) ; return @@v4@@ ; }", "source": [{"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r64"}, {"n": "v4", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s12"}, {"n": "v3", "t": {"T": 1, "n": "int", "s": 4}, "location": "s16"}]}
{"name": "gen_set_label", "code": "unsigned __int64 __fastcall gen_set_label ( int @@a1@@ ) { unsigned __int64 @@v2@@ ; @@v2@@ = __readfsqword ( Number ) ; tcg_gen_op1i ( Number , @@a1@@ ) ; return __readfsqword ( Number ) ^ @@v2@@ ; }", "source": [{"n": "a1", "t": {"T": 1, "n": "int", "s": 4}, "location": "r56"}, {"n": "v2", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "s8"}]} {"name": "gen_op_jnz_ecx", "code": "unsigned __int64 __fastcall gen_op_jnz_ecx ( int @@a1@@ , int @@a2@@ ) { unsigned __int64 @@v3@@ ; @@v3@@ = __readfsqword ( Number ) ; tcg_gen_mov_i64 ( cpu_tmp0 , dword_2E264 ) ; gen_extu ( @@a1@@ + Number , cpu_tmp0 ) ; tcg_gen_brcondi_i64 ( Number , cpu_tmp0 , Number L , @@a2@@ ) ; return __readfsqword ( Number ) ^ @@v3@@ ; }", "source": [{"n": "a1", "t": {"T": 1, "n": "int", "s": 4}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "int", "s": 4}, "location": "r64"}, {"n": "v3", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "s8"}]} {"name": "gen_repz_movs", "code": "unsigned __int64 __fastcall gen_repz_movs ( int * @@a1@@ , int @@a2@@ , __int64 @@a3@@ , __int64 @@a4@@ ) { int @@v7@@ ; unsigned __int64 @@v8@@ ; @@v8@@ = __readfsqword ( Number ) ; gen_update_cc_op ( ( __int64 ) @@a1@@ ) ; @@v7@@ = gen_jz_ecx_string ( ( __int64 ) @@a1@@ , @@a4@@ ) ; gen_movs ( @@a1@@ , @@a2@@ ) ; gen_op_add_reg_im ( @@a1@@ [ Number ] , Number , Number ) ; if ( ! @@a1@@ [ Number ] ) gen_op_jz_ecx ( @@a1@@ [ Number ] , @@v7@@ ) ; gen_jmp ( @@a1@@ , @@a3@@ ) ; return __readfsqword ( Number ) ^ @@v8@@ ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r16"}, {"n": "a4", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r24"}, {"n": "a1", "t": {"T": 3, "t": "int"}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "int", "s": 4}, "location": "r64"}, {"n": "v7", "t": {"T": 1, "n": "int", "s": 4}, "location": "s12"}, {"n": "v8", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "s8"}]} {"name": "gen_repz_stos", "code": "unsigned __int64 __fastcall gen_repz_stos ( __int64 @@a1@@ , int @@a2@@ , __int64 @@a3@@ , __int64 @@a4@@ ) { int @@v7@@ ; unsigned __int64 @@v8@@ ; @@v8@@ = __readfsqword ( Number ) ; gen_update_cc_op ( @@a1@@ ) ; @@v7@@ = gen_jz_ecx_string ( @@a1@@ , @@a4@@ ) ; gen_stos ( @@a1@@ , @@a2@@ ) ; gen_op_add_reg_im ( * ( _DWORD * ) ( @@a1@@ + Number ) , Number , Number ) ; if ( ! * ( _DWORD * ) ( @@a1@@ + Number ) ) gen_op_jz_ecx ( * ( _DWORD * ) ( @@a1@@ + Number ) , @@v7@@ ) ; gen_jmp ( @@a1@@ , @@a3@@ ) ; return __readfsqword ( Number ) ^ @@v8@@ ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r16"}, {"n": "a4", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r24"}, {"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "int", "s": 4}, "location": "r64"}, {"n": "v7", "t": {"T": 1, "n": "int", "s": 4}, "location": "s12"}, {"n": "v8", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "s8"}]} {"name": "gen_repz_lods", "code": "unsigned __int64 __fastcall gen_repz_lods ( int * @@a1@@ , int @@a2@@ , __int64 @@a3@@ , __int64 @@a4@@ ) { int @@v7@@ ; unsigned __int64 @@v8@@ ; @@v8@@ = __readfsqword ( Number ) ; gen_update_cc_op ( ( __int64 ) @@a1@@ ) ; @@v7@@ = gen_jz_ecx_string ( ( __int64 ) @@a1@@ , @@a4@@ ) ; gen_lods ( @@a1@@ , @@a2@@ ) ; gen_op_add_reg_im ( @@a1@@ [ Number ] , Number , Number ) ; if ( ! @@a1@@ [ Number ] ) gen_op_jz_ecx ( @@a1@@ [ Number ] , @@v7@@ ) ; gen_jmp ( @@a1@@ , @@a3@@ ) ; return __readfsqword ( Number ) ^ @@v8@@ ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r16"}, {"n": "a4", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r24"}, {"n": "a1", "t": {"T": 3, "t": "int"}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "int", "s": 4}, "location": "r64"}, {"n": "v7", "t": {"T": 1, "n": "int", "s": 4}, "location": "s12"}, {"n": "v8", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "s8"}]} {"name": "gen_repz_ins", "code": "unsigned __int64 __fastcall gen_repz_ins ( __int64 @@a1@@ , int @@a2@@ , __int64 @@a3@@ , __int64 @@a4@@ ) { int @@v7@@ ; unsigned __int64 @@v8@@ ; @@v8@@ = __readfsqword ( Number ) ; gen_update_cc_op ( @@a1@@ ) ; @@v7@@ = gen_jz_ecx_string ( @@a1@@ , @@a4@@ ) ; gen_ins ( @@a1@@ , @@a2@@ ) ; gen_op_add_reg_im ( * ( _DWORD * ) ( @@a1@@ + Number ) , Number , Number ) ; if ( ! * ( _DWORD * ) ( @@a1@@ + Number ) ) gen_op_jz_ecx ( * ( _DWORD * ) ( @@a1@@ + Number ) , @@v7@@ ) ; gen_jmp ( @@a1@@ , @@a3@@ ) ; return __readfsqword ( Number ) ^ @@v8@@ ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r16"}, {"n": "a4", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r24"}, {"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "int", "s": 4}, "location": "r64"}, {"n": "v7", "t": {"T": 1, "n": "int", "s": 4}, "location": "s12"}, {"n": "v8", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "s8"}]} {"name": "gen_repz_outs", "code": "unsigned __int64 __fastcall gen_repz_outs ( int * @@a1@@ , int @@a2@@ , __int64 @@a3@@ , __int64 @@a4@@ ) { int @@v7@@ ; unsigned __int64 @@v8@@ ; @@v8@@ = __readfsqword ( Number ) ; gen_update_cc_op ( ( __int64 ) @@a1@@ ) ; @@v7@@ = gen_jz_ecx_string ( ( __int64 ) @@a1@@ , @@a4@@ ) ; gen_outs ( @@a1@@ , @@a2@@ ) ; gen_op_add_reg_im ( @@a1@@ [ Number ] , Number , Number ) ; if ( ! @@a1@@ [ Number ] ) gen_op_jz_ecx ( @@a1@@ [ Number ] , @@v7@@ ) ; gen_jmp ( @@a1@@ , @@a3@@ ) ; return __readfsqword ( Number ) ^ @@v8@@ ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r16"}, {"n": "a4", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r24"}, {"n": "a1", "t": {"T": 3, "t": "int"}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "int", "s": 4}, "location": "r64"}, {"n": "v7", "t": {"T": 1, "n": "int", "s": 4}, "location": "s12"}, {"n": "v8", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "s8"}]} {"name": "gen_repz_scas", "code": "unsigned __int64 __fastcall gen_repz_scas ( __int64 @@a1@@ , int @@a2@@ , __int64 @@a3@@ , __int64 @@a4@@ , int @@a5@@ ) { int @@v9@@ ; unsigned __int64 @@v10@@ ; @@v10@@ = __readfsqword ( Number ) ; gen_update_cc_op ( @@a1@@ ) ; @@v9@@ = gen_jz_ecx_string ( @@a1@@ , @@a4@@ ) ; gen_scas ( @@a1@@ , @@a2@@ ) ; gen_op_add_reg_im ( * ( _DWORD * ) ( @@a1@@ + Number ) , Number , Number ) ; gen_op_set_cc_op ( @@a2@@ + Number ) ; gen_jcc1 ( @@a1@@ , @@a2@@ + Number , @@a5@@ ^ Number | Number , @@v9@@ ) ; if ( ! * ( _DWORD * ) ( @@a1@@ + Number ) ) gen_op_jz_ecx ( * ( _DWORD * ) ( @@a1@@ + Number ) , @@v9@@ ) ; gen_jmp ( @@a1@@ , @@a3@@ ) ; return __readfsqword ( Number ) ^ @@v10@@ ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r16"}, {"n": "a4", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r24"}, {"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "int", "s": 4}, "location": "r64"}, {"n": "a5", "t": {"T": 1, "n": "int", "s": 4}, "location": "r72"}, {"n": "v9", "t": {"T": 1, "n": "int", "s": 4}, "location": "s12"}, {"n": "v10", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "s8"}]} {"name": "gen_repz_cmps", "code": "unsigned __int64 __fastcall gen_repz_cmps ( int * @@a1@@ , int @@a2@@ , __int64 @@a3@@ , __int64 @@a4@@ , int @@a5@@ ) { int @@v9@@ ; unsigned __int64 @@v10@@ ; @@v10@@ = __readfsqword ( Number ) ; gen_update_cc_op ( ( __int64 ) @@a1@@ ) ; @@v9@@ = gen_jz_ecx_string ( ( __int64 ) @@a1@@ , @@a4@@ ) ; gen_cmps ( @@a1@@ , @@a2@@ ) ; gen_op_add_reg_im ( @@a1@@ [ Number ] , Number , Number ) ; gen_op_set_cc_op ( @@a2@@ + Number ) ; gen_jcc1 ( ( __int64 ) @@a1@@ , @@a2@@ + Number , @@a5@@ ^ Number | Number , @@v9@@ ) ; if ( ! @@a1@@ [ Number ] ) gen_op_jz_ecx ( @@a1@@ [ Number ] , @@v9@@ ) ; gen_jmp ( @@a1@@ , @@a3@@ ) ; return __readfsqword ( Number ) ^ @@v10@@ ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r16"}, {"n": "a4", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r24"}, {"n": "a1", "t": {"T": 3, "t": "int"}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "int", "s": 4}, "location": "r64"}, {"n": "a5", "t": {"T": 1, "n": "int", "s": 4}, "location": "r72"}, {"n": "v9", "t": {"T": 1, "n": "int", "s": 4}, "location": "s12"}, {"n": "v10", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "s8"}]} {"name": "gen_op", "code": "unsigned __int64 __fastcall gen_op ( __int64 @@a1@@ , int @@a2@@ , int @@a3@@ , int @@a4@@ ) { unsigned __int64 @@v7@@ ; @@v7@@ = __readfsqword ( Number ) ; if ( @@a4@@ == Number ) gen_op_ld_T0_A0 ( * ( _DWORD * ) ( @@a1@@ + Number ) + @@a3@@ ) ; else gen_op_mov_TN_reg ( @@a3@@ , Number , @@a4@@ ) ; switch ( @@a2@@ ) { case Number : gen_op_addl_T0_T1 ( ) ; if ( @@a4@@ == Number ) gen_op_st_T0_A0 ( * ( _DWORD * ) ( @@a1@@ + Number ) + @@a3@@ ) ; else gen_op_mov_reg_T0 ( @@a3@@ , @@a4@@ ) ; gen_op_update2_cc ( ) ; * ( _DWORD * ) ( @@a1@@ + Number ) = @@a3@@ + Number ; return __readfsqword ( Number ) ^ @@v7@@ ; case Number : tcg_gen_or_i64 ( cpu_T [ Number ] , cpu_T [ Number ] , dword_2E2A4 ) ; if ( @@a4@@ == Number ) goto LABEL_32 ; goto LABEL_28 ; case Number : if ( * ( _DWORD * ) ( @@a1@@ + Number ) ) gen_op_set_cc_op ( * ( _DWORD * ) ( @@a1@@ + Number ) ) ; gen_compute_eflags_c ( cpu_tmp4 ) ; tcg_gen_add_i64 ( cpu_T [ Number ] , cpu_T [ Number ] , dword_2E2A4 ) ; tcg_gen_add_i64 ( cpu_T [ Number ] , cpu_T [ Number ] , cpu_tmp4 ) ; if ( @@a4@@ == Number ) gen_op_st_T0_A0 ( * ( _DWORD * ) ( @@a1@@ + Number ) + @@a3@@ ) ; else gen_op_mov_reg_T0 ( @@a3@@ , @@a4@@ ) ; tcg_gen_mov_i64 ( cpu_cc_src , dword_2E2A4 ) ; tcg_gen_mov_i64 ( cpu_cc_dst , cpu_T [ Number ] ) ; tcg_gen_trunc_i64_i32 ( cpu_tmp2_i32 , cpu_tmp4 ) ; tcg_gen_shli_i32 ( cpu_tmp2_i32 , cpu_tmp2_i32 , Number ) ; tcg_gen_addi_i32 ( cpu_cc_op , cpu_tmp2_i32 , @@a3@@ + Number ) ; * ( _DWORD * ) ( @@a1@@ + Number ) = Number ; return __readfsqword ( Number ) ^ @@v7@@ ; case Number : if ( * ( _DWORD * ) ( @@a1@@ + Number ) ) gen_op_set_cc_op ( * ( _DWORD * ) ( @@a1@@ + Number ) ) ; gen_compute_eflags_c ( cpu_tmp4 ) ; tcg_gen_sub_i64 ( cpu_T [ Number ] , cpu_T [ Number ] , dword_2E2A4 ) ; tcg_gen_sub_i64 ( cpu_T [ Number ] , cpu_T [ Number ] , cpu_tmp4 ) ; if ( @@a4@@ == Number ) gen_op_st_T0_A0 ( * ( _DWORD * ) ( @@a1@@ + Number ) + @@a3@@ ) ; else gen_op_mov_reg_T0 ( @@a3@@ , @@a4@@ ) ; tcg_gen_mov_i64 ( cpu_cc_src , dword_2E2A4 ) ; tcg_gen_mov_i64 ( cpu_cc_dst , cpu_T [ Number ] ) ; tcg_gen_trunc_i64_i32 ( cpu_tmp2_i32 , cpu_tmp4 ) ; tcg_gen_shli_i32 ( cpu_tmp2_i32 , cpu_tmp2_i32 , Number ) ; tcg_gen_addi_i32 ( cpu_cc_op , cpu_tmp2_i32 , @@a3@@ + Number ) ; * ( _DWORD * ) ( @@a1@@ + Number ) = Number ; return __readfsqword ( Number ) ^ @@v7@@ ; case Number : tcg_gen_sub_i64 ( cpu_T [ Number ] , cpu_T [ Number ] , dword_2E2A4 ) ; if ( @@a4@@ == Number ) gen_op_st_T0_A0 ( * ( _DWORD * ) ( @@a1@@ + Number ) + @@a3@@ ) ; else gen_op_mov_reg_T0 ( @@a3@@ , @@a4@@ ) ; gen_op_update2_cc ( ) ; * ( _DWORD * ) ( @@a1@@ + Number ) = @@a3@@ + Number ; return __readfsqword ( Number ) ^ @@v7@@ ; case Number : tcg_gen_xor_i64 ( cpu_T [ Number ] , cpu_T [ Number ] , dword_2E2A4 ) ; if ( @@a4@@ != Number ) goto LABEL_28 ; goto LABEL_32 ; case Number : gen_op_cmpl_T0_T1_cc ( ) ; * ( _DWORD * ) ( @@a1@@ + Number ) = @@a3@@ + Number ; return __readfsqword ( Number ) ^ @@v7@@ ; default : tcg_gen_and_i64 ( cpu_T [ Number ] , cpu_T [ Number ] , dword_2E2A4 ) ; if ( @@a4@@ == Number ) LABEL_32 : gen_op_st_T0_A0 ( * ( _DWORD * ) ( @@a1@@ + Number ) + @@a3@@ ) ; else LABEL_28 : gen_op_mov_reg_T0 ( @@a3@@ , @@a4@@ ) ; gen_op_update1_cc ( ) ; * ( _DWORD * ) ( @@a1@@ + Number ) = @@a3@@ + Number ; return __readfsqword ( Number ) ^ @@v7@@ ; } }", "source": [{"n": "a3", "t": {"T": 1, "n": "int", "s": 4}, "location": "r16"}, {"n": "a4", "t": {"T": 1, "n": "int", "s": 4}, "location": "r24"}, {"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "int", "s": 4}, "location": "r64"}, {"n": "v7", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "s8"}]} {"name": "gen_jmp_tb", "code": "unsigned __int64 __fastcall gen_jmp_tb ( __int64 @@a1@@ , __int64 @@a2@@ , int @@a3@@ ) { unsigned __int64 @@v5@@ ; @@v5@@ = __readfsqword ( Number ) ; if ( * ( _DWORD * ) ( @@a1@@ + Number ) ) { if ( * ( _DWORD * ) ( @@a1@@ + Number ) ) { gen_op_set_cc_op ( * ( _DWORD * ) ( @@a1@@ + Number ) ) ; * ( _DWORD * ) ( @@a1@@ + Number ) = Number ; } gen_goto_tb ( ( _QWORD * ) @@a1@@ , @@a3@@ , @@a2@@ ) ; * ( _DWORD * ) ( @@a1@@ + Number ) = Number ; } else { gen_jmp_im ( @@a2@@ ) ; gen_eob ( @@a1@@ ) ; } return __readfsqword ( Number ) ^ @@v5@@ ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "int", "s": 4}, "location": "r16"}, {"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r64"}, {"n": "v5", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "s8"}]} {"name": "gen_jmp", "code": "unsigned __int64 __fastcall gen_jmp ( __int64 @@a1@@ , __int64 @@a2@@ ) { unsigned __int64 @@v3@@ ; @@v3@@ = __readfsqword ( Number ) ; gen_jmp_tb ( @@a1@@ , @@a2@@ , Number ) ; return __readfsqword ( Number ) ^ @@v3@@ ; }", "source": [{"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r64"}, {"n": "v3", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "s8"}]}