{"name": "bstrcmp", "code": "int __fastcall bstrcmp ( __int64 @@a1@@ , const char * @@a2@@ ) { int @@result@@ ; int @@v3@@ ; @@v3@@ = strlen ( @@a2@@ ) ; if ( * ( _DWORD * ) ( @@a1@@ + Number ) == @@v3@@ ) @@result@@ = strncmp ( * ( const char * * ) @@a1@@ , @@a2@@ , @@v3@@ ) ; else @@result@@ = * ( _DWORD * ) ( @@a1@@ + Number ) - @@v3@@ ; return @@result@@ ; }", "source": [{"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 3, "t": "const char"}, "location": "r64"}, {"n": "result", "t": {"T": 1, "n": "int", "s": 4}, "location": "r8"}, {"n": "v3", "t": {"T": 1, "n": "int", "s": 4}, "location": "s4"}]}
{"name": "u32_parse_eopt", "code": "__int64 __fastcall u32_parse_eopt ( __int64 @@a1@@ , __int64 @@a2@@ , __int64 @@a3@@ ) { unsigned int @@v4@@ ; void * @@v5@@ ; __int64 @@v6@@ ; __int64 @@v7@@ ; __int64 @@v8@@ ; __int64 @@v9@@ ; int @@s@@ [ Number ] ; void * @@dest@@ ; __int64 @@v12@@ ; int @@v13@@ ; unsigned __int64 @@v14@@ ; __int64 @@v15@@ ; __int64 @@v16@@ ; int @@v17@@ ; uint32_t @@hostlong@@ [ Number ] ; uint32_t @@v19@@ [ Number ] ; @@v9@@ = @@a1@@ ; @@v8@@ = @@a2@@ ; @@v7@@ = @@a3@@ ; @@v15@@ = Number L ; memset ( @@s@@ , Number , Number ) ; if ( ! @@v7@@ ) return em_parse_error ( Number L , Number L , Number L , & u32_ematch_util , String ) ; if ( bstrcmp ( @@v7@@ , String ) ) { if ( bstrcmp ( @@v7@@ , String ) ) { if ( bstrcmp ( @@v7@@ , String ) ) return em_parse_error ( Number L , @@v7@@ , @@v7@@ , & u32_ematch_util , String ) ; @@v17@@ = Number ; } else { @@v17@@ = Number ; } } else { @@v17@@ = Number ; } @@v16@@ = bstr_next ( @@v7@@ ) ; if ( ! @@v16@@ ) return em_parse_error ( Number L , @@v7@@ , Number L , & u32_ematch_util , String ) ; * ( _QWORD * ) @@hostlong@@ = bstrtoul ( @@v16@@ ) ; if ( * ( _QWORD * ) @@hostlong@@ == Number ) return em_parse_error ( Number L , @@v7@@ , @@v16@@ , & u32_ematch_util , String ) ; @@v16@@ = bstr_next ( @@v16@@ ) ; if ( ! @@v16@@ ) return em_parse_error ( Number L , @@v7@@ , Number L , & u32_ematch_util , String ) ; * ( _QWORD * ) @@v19@@ = bstrtoul ( @@v16@@ ) ; if ( * ( _QWORD * ) @@v19@@ == Number ) return em_parse_error ( Number L , @@v7@@ , @@v16@@ , & u32_ematch_util , String ) ; @@v16@@ = bstr_next ( @@v16@@ ) ; if ( ! @@v16@@ || bstrcmp ( @@v16@@ , String ) ) return em_parse_error ( Number L , @@v7@@ , @@v16@@ , & u32_ematch_util , String ) ; @@v16@@ = bstr_next ( @@v16@@ ) ; if ( ! @@v16@@ ) return em_parse_error ( Number L , @@v7@@ , Number L , & u32_ematch_util , String ) ; @@v13@@ = Number ; if ( * ( _DWORD * ) ( @@v16@@ + Number ) > Number && ! memcmp ( * ( const void * * ) @@v16@@ , String , @@v13@@ ) ) { @@v4@@ = * ( _DWORD * ) ( @@v16@@ + Number ) - @@v13@@ + Number ; @@v12@@ = @@v4@@ - Number L ; @@v5@@ = alloca ( Number * ( ( ( unsigned __int64 ) @@v4@@ + Number ) / Number ) ) ; @@dest@@ = & @@v6@@ ; @@v15@@ = Number ; memcpy ( & @@v6@@ , ( const void * ) ( * ( _QWORD * ) @@v16@@ + @@v13@@ ) , ( unsigned int ) ( * ( _DWORD * ) ( @@v16@@ + Number ) - @@v13@@ ) ) ; @@v14@@ = strtoul ( ( const char * ) @@dest@@ , Number L , Number ) ; } else { if ( ! bstrcmp ( @@v16@@ , String ) ) { @@v16@@ = bstr_next ( @@v16@@ ) ; if ( ! @@v16@@ ) return em_parse_error ( Number L , @@v7@@ , Number L , & u32_ematch_util , String ) ; } @@v14@@ = bstrtoul ( @@v16@@ ) ; } if ( @@v14@@ == Number ) return em_parse_error ( Number L , @@v7@@ , @@v16@@ , & u32_ematch_util , String ) ; if ( * ( _QWORD * ) ( @@v16@@ + Number ) ) return em_parse_error ( Number L , @@v7@@ , * ( _QWORD * ) ( @@v16@@ + Number ) , & u32_ematch_util , String ) ; if ( @@v17@@ == Number ) { if ( * ( _QWORD * ) @@hostlong@@ > Number ) return em_parse_error ( Number L , @@v7@@ , @@v16@@ , & u32_ematch_util , String ) ; if ( * ( _QWORD * ) @@v19@@ > Number ) return em_parse_error ( Number L , @@v7@@ , @@v16@@ , & u32_ematch_util , String ) ; * ( _QWORD * ) @@hostlong@@ <<= Number * ( ~ ( _BYTE ) @@v14@@ & Number ) ; * ( _QWORD * ) @@v19@@ <<= Number * ( ~ ( _BYTE ) @@v14@@ & Number ) ; @@v14@@ &= Number ; } else if ( @@v17@@ == Number ) { if ( * ( _QWORD * ) @@hostlong@@ > Number ) return em_parse_error ( Number L , @@v7@@ , @@v16@@ , & u32_ematch_util , String ) ; if ( * ( _QWORD * ) @@v19@@ > Number ) return em_parse_error ( Number L , @@v7@@ , @@v16@@ , & u32_ematch_util , String ) ; if ( ( @@v14@@ & Number ) == Number ) { * ( _QWORD * ) @@hostlong@@ <<= Number ; * ( _QWORD * ) @@v19@@ <<= Number ; } @@v14@@ &= Number ; } * ( _QWORD * ) @@hostlong@@ = htonl ( @@hostlong@@ [ Number ] ) ; * ( _QWORD * ) @@v19@@ = htonl ( @@v19@@ [ Number ] ) ; if ( ( @@v14@@ & Number ) != Number ) return em_parse_error ( Number L , @@v7@@ , @@v16@@ , & u32_ematch_util , String ) ; * ( _QWORD * ) @@hostlong@@ &= * ( _QWORD * ) @@v19@@ ; @@s@@ [ Number ] = @@v19@@ [ Number ] ; @@s@@ [ Number ] = @@hostlong@@ [ Number ] ; @@s@@ [ Number ] = @@v14@@ ; @@s@@ [ Number ] = @@v15@@ ; addraw_l ( @@v9@@ , Number , @@v8@@ , Number L ) ; addraw_l ( @@v9@@ , Number , @@s@@ , Number L ) ; return Number L ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r16"}, {"n": "v5", "t": {"T": 3, "t": "void"}, "location": "r40"}, {"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": "r8"}, {"n": "v13", "t": {"T": 1, "n": "int", "s": 4}, "location": "s100"}, {"n": "v12", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s112"}, {"n": "dest", "t": {"T": 3, "t": "void"}, "location": "s120"}, {"n": "s", "t": {"T": 2, "n": 6, "s": 4, "t": "int"}, "location": "s144"}, {"n": "v9", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s152"}, {"n": "v8", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s160"}, {"n": "v7", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s168"}, {"n": "v6", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s176"}, {"n": "v19", "t": {"T": 2, "n": 2, "s": 4, "t": "uint32_t"}, "location": "s56"}, {"n": "hostlong", "t": {"T": 2, "n": 2, "s": 4, "t": "uint32_t"}, "location": "s64"}, {"n": "v17", "t": {"T": 1, "n": "int", "s": 4}, "location": "s68"}, {"n": "v16", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s80"}, {"n": "v15", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s88"}, {"n": "v14", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "s96"}]}