{"name": "thunk_convert", "code": "__int64 __fastcall thunk_convert ( _BYTE * @@a1@@ , unsigned __int16 * @@a2@@ , _DWORD * @@a3@@ , unsigned int @@a4@@ ) { __int64 v4 ; __int64 v7 ; int * v8 ; int @@i@@ ; int @@j@@ ; unsigned int @@v11@@ ; int @@v12@@ ; int @@v13@@ ; int @@v14@@ ; unsigned __int16 * @@v15@@ ; _BYTE * @@v16@@ ; __int64 @@v17@@ ; char * @@v18@@ ; __int64 @@v19@@ ; __int64 @@v20@@ ; v7 = ( __int64 ) ( @@a3@@ + Number ) ; @@v11@@ = * @@a3@@ ; switch ( * @@a3@@ ) { case Number : * @@a1@@ = * ( _BYTE * ) @@a2@@ ; break ; case Number : * ( _WORD * ) @@a1@@ = tswap16 ( * @@a2@@ ) ; break ; case Number : * ( _DWORD * ) @@a1@@ = tswap32 ( * ( _DWORD * ) @@a2@@ ) ; break ; case Number : case Number : case Number : if ( @@a4@@ ) { if ( @@v11@@ == Number ) v4 = ( int ) tswap32 ( * ( _DWORD * ) @@a2@@ ) ; else v4 = ( unsigned int ) tswap32 ( * ( _DWORD * ) @@a2@@ ) ; * ( _QWORD * ) @@a1@@ = v4 ; } else { * ( _DWORD * ) @@a1@@ = tswap32 ( * ( _QWORD * ) @@a2@@ ) ; } break ; case Number : case Number : * ( _QWORD * ) @@a1@@ = tswap64 ( * ( _QWORD * ) @@a2@@ ) ; break ; case Number : v8 = @@a3@@ + Number ; @@v12@@ = @@a3@@ [ Number ] ; @@v13@@ = thunk_type_size ( @@a3@@ + Number , @@a4@@ ) ; @@v14@@ = thunk_type_size ( v8 , Number - @@a4@@ ) ; @@v16@@ = @@a1@@ ; @@v15@@ = @@a2@@ ; for ( @@i@@ = Number ; @@i@@ < @@v12@@ ; ++ @@i@@ ) { thunk_convert ( @@v16@@ , @@v15@@ , v8 , @@a4@@ ) ; @@v16@@ += @@v13@@ ; @@v15@@ = ( unsigned __int16 * ) ( ( char * ) @@v15@@ + @@v14@@ ) ; } v7 = thunk_type_next ( v8 ) ; break ; case Number : v7 = ( __int64 ) ( @@a3@@ + Number ) ; @@v18@@ = & struct_entries [ Number * @@a3@@ [ Number ] ] ; if ( * ( ( _QWORD * ) @@v18@@ + Number ) ) { ( * ( void ( __fastcall * * ) ( _BYTE * , unsigned __int16 * ) ) & @@v18@@ [ Number * @@a4@@ + Number ] ) ( @@a1@@ , @@a2@@ ) ; } else { @@v17@@ = * ( _QWORD * ) @@v18@@ ; @@v19@@ = * ( _QWORD * ) & @@v18@@ [ Number * @@a4@@ + Number ] ; @@v20@@ = * ( _QWORD * ) & @@v18@@ [ Number * ( Number - @@a4@@ ) + Number ] ; for ( @@j@@ = Number ; @@j@@ < * ( ( _DWORD * ) @@v18@@ + Number ) ; ++ @@j@@ ) @@v17@@ = thunk_convert ( & @@a1@@ [ * ( int * ) ( Number L * @@j@@ + @@v19@@ ) ] , ( char * ) @@a2@@ + * ( int * ) ( Number L * @@j@@ + @@v20@@ ) , @@v17@@ , @@a4@@ ) ; } break ; default : fprintf ( stderr , String , @@v11@@ ) ; break ; } return v7 ; }", "source": [{"n": "a3", "t": {"T": 3, "t": "_DWORD"}, "location": "r16"}, {"n": "a4", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "r24"}, {"n": "a1", "t": {"T": 3, "t": "_BYTE"}, "location": "r56"}, {"n": "a2", "t": {"T": 3, "t": "unsigned __int16"}, "location": "r64"}, {"n": "v20", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s32"}, {"n": "v19", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s40"}, {"n": "v18", "t": {"T": 3, "t": "char"}, "location": "s48"}, {"n": "v17", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s56"}, {"n": "v16", "t": {"T": 3, "t": "_BYTE"}, "location": "s64"}, {"n": "v15", "t": {"T": 3, "t": "unsigned __int16"}, "location": "s72"}, {"n": "v14", "t": {"T": 1, "n": "int", "s": 4}, "location": "s76"}, {"n": "v13", "t": {"T": 1, "n": "int", "s": 4}, "location": "s80"}, {"n": "v12", "t": {"T": 1, "n": "int", "s": 4}, "location": "s84"}, {"n": "v11", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s88"}, {"n": "j", "t": {"T": 1, "n": "int", "s": 4}, "location": "s92"}, {"n": "i", "t": {"T": 1, "n": "int", "s": 4}, "location": "s96"}]}
{"name": "tswap16", "code": "__int64 __fastcall tswap16 ( unsigned __int16 @@a1@@ ) { return @@a1@@ ; }", "source": [{"n": "a1", "t": {"T": 1, "n": "unsigned __int16", "s": 2}, "location": "r56"}]} {"name": "tswap32", "code": "__int64 __fastcall tswap32 ( unsigned int @@a1@@ ) { return @@a1@@ ; }", "source": [{"n": "a1", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "r56"}]} {"name": "tswap64", "code": "__int64 __fastcall tswap64 ( __int64 @@a1@@ ) { return @@a1@@ ; }", "source": [{"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}]} {"name": "thunk_type_size", "code": "__int64 __fastcall thunk_type_size ( _DWORD * @@a1@@ , unsigned int @@a2@@ ) { __int64 @@result@@ ; int @@v3@@ ; switch ( * @@a1@@ ) { case Number : @@result@@ = Number L ; break ; case Number : @@result@@ = Number L ; break ; case Number : @@result@@ = Number L ; break ; case Number : case Number : case Number : case Number : if ( @@a2@@ ) @@result@@ = Number L ; else @@result@@ = Number L ; break ; case Number : case Number : @@result@@ = Number L ; break ; case Number : @@v3@@ = @@a1@@ [ Number ] ; @@result@@ = @@v3@@ * ( unsigned int ) thunk_type_size_array ( @@a1@@ + Number , @@a2@@ ) ; break ; case Number : @@result@@ = * ( unsigned int * ) & struct_entries [ Number * @@a1@@ [ Number ] + Number + Number * @@a2@@ ] ; break ; default : @@result@@ = Number ; break ; } return @@result@@ ; }", "source": [{"n": "a1", "t": {"T": 3, "t": "_DWORD"}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "r64"}, {"n": "result", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r8"}, {"n": "v3", "t": {"T": 1, "n": "int", "s": 4}, "location": "s20"}]} {"name": "thunk_type_next", "code": "__int64 __fastcall thunk_type_next ( int * @@a1@@ ) { int @@v2@@ ; @@v2@@ = * @@a1@@ ; if ( * @@a1@@ == Number ) return ( __int64 ) ( @@a1@@ + Number ) ; if ( @@v2@@ <= Number ) { if ( @@v2@@ == Number ) return thunk_type_next_ptr ( @@a1@@ + Number ) ; if ( @@v2@@ <= Number ) { if ( @@v2@@ > Number ) return thunk_type_next_ptr ( @@a1@@ + Number ) ; if ( @@v2@@ > Number ) return ( __int64 ) ( @@a1@@ + Number ) ; } } return Number L ; }", "source": [{"n": "a1", "t": {"T": 3, "t": "int"}, "location": "r56"}, {"n": "v2", "t": {"T": 1, "n": "int", "s": 4}, "location": "s12"}]}