{"name": "sub_402655", "code": "__int64 __fastcall sub_402655 ( _QWORD * @@a1@@ ) { __int64 @@result@@ ; unsigned int v2 ; unsigned int @@v3@@ ; int v4 ; if ( * ( ( _DWORD * ) @@a1@@ + Number ) ) return * ( ( unsigned int * ) @@a1@@ + Number ) ; v2 = * ( ( _DWORD * ) @@a1@@ + Number ) ; LODWORD ( @@result@@ ) = sub_402596 ( ( __int64 ( __fastcall * ) ( _QWORD , __int64 , _QWORD ) ) @@a1@@ [ Number ] , * ( ( _DWORD * ) @@a1@@ + Number ) , * @@a1@@ , v2 ) ; @@v3@@ = @@result@@ ; if ( ( int ) @@result@@ <= Number ) return ( unsigned int ) @@result@@ ; * ( ( _DWORD * ) @@a1@@ + Number ) = @@result@@ ; v4 = v2 - @@result@@ ; * ( ( _DWORD * ) @@a1@@ + Number ) = v4 ; if ( v4 > Number ) sub_402C7B ( v4 + * @@a1@@ , ( unsigned int ) @@result@@ , * @@a1@@ ) ; return @@v3@@ ; }", "source": [{"n": "v3", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "r104"}, {"n": "a1", "t": {"T": 3, "t": "_QWORD"}, "location": "r56"}, {"n": "result", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r8"}]}
{"name": "sub_402596", "code": "__int64 __fastcall sub_402596 ( __int64 ( __fastcall * @@a1@@ ) ( _QWORD , __int64 , _QWORD ) , unsigned int @@a2@@ , __int64 @@a3@@ , unsigned int @@a4@@ ) { unsigned int @@v6@@ ; do @@v6@@ = @@a1@@ ( @@a2@@ , @@a3@@ , @@a4@@ ) ; while ( @@v6@@ == Number && * __errno_location ( ) == dword_4051B4 ) ; return @@v6@@ ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r16"}, {"n": "a4", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "r24"}, {"n": "v6", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "r32"}, {"n": "a1", "t": {"T": 9, "n": "__int64 (__fastcall *)(_QWORD, __int64, _QWORD)"}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "r64"}]} {"name": "sub_4026D9", "code": "__int64 __fastcall sub_4026D9 ( __int64 @@a1@@ , __int64 @@a2@@ , signed int @@a3@@ ) { __int64 @@result@@ ; signed int v5 ; int v6 ; if ( * ( int * ) ( @@a1@@ + Number ) > Number ) return sub_4025EF ( @@a1@@ , @@a2@@ , @@a3@@ ) ; v5 = * ( _DWORD * ) ( @@a1@@ + Number ) ; if ( v5 <= @@a3@@ ) return sub_402596 ( * ( __int64 ( __fastcall * * ) ( _QWORD , __int64 , _QWORD ) ) ( @@a1@@ + Number ) , * ( _DWORD * ) ( @@a1@@ + Number ) , @@a2@@ , v5 ) ; v6 = sub_402655 ( ( _QWORD * ) @@a1@@ ) ; if ( v6 > Number ) @@result@@ = sub_4025EF ( @@a1@@ , @@a2@@ , @@a3@@ ) ; else @@result@@ = ( unsigned int ) v6 ; return @@result@@ ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "signed 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": "result", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r8"}]} {"name": "sub_402764", "code": "__int64 __fastcall sub_402764 ( __int64 @@a1@@ , __int64 @@a2@@ , signed int @@a3@@ ) { __int64 @@result@@ ; int @@v5@@ ; if ( * ( int * ) ( @@a1@@ + Number ) > Number ) return sub_4025EF ( @@a1@@ , @@a2@@ , @@a3@@ ) ; if ( @@a3@@ >= * ( _DWORD * ) ( @@a1@@ + Number ) ) return sub_402596 ( * ( __int64 ( __fastcall * * ) ( _QWORD , __int64 , _QWORD ) ) ( @@a1@@ + Number ) , * ( _DWORD * ) ( @@a1@@ + Number ) , @@a2@@ , @@a3@@ ) ; @@v5@@ = sub_402655 ( ( _QWORD * ) @@a1@@ ) ; if ( @@v5@@ > Number ) @@result@@ = sub_4025EF ( @@a1@@ , @@a2@@ , @@a3@@ ) ; else @@result@@ = ( unsigned int ) @@v5@@ ; return @@result@@ ; }", "source": [{"n": "v5", "t": {"T": 1, "n": "int", "s": 4}, "location": "r120"}, {"n": "a3", "t": {"T": 1, "n": "signed 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": "result", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r8"}]} {"name": "sub_402C7B", "code": "__int64 __fastcall sub_402C7B ( __int64 @@a1@@ , unsigned int @@a2@@ , __int64 @@a3@@ ) { unsigned int v3 ; __int64 @@result@@ ; _BYTE * v5 ; _BYTE * v6 ; unsigned int v7 ; _BYTE * v8 ; unsigned int v9 ; _BYTE * v10 ; unsigned int v11 ; v3 = @@a2@@ ; @@result@@ = @@a2@@ + @@a1@@ ; v5 = ( _BYTE * ) ( @@a2@@ + @@a3@@ ) ; while ( v3 ) { v6 = v5 - Number ; * ( _BYTE * ) -- @@result@@ = * v6 ; v7 = v3 - Number ; if ( ! v7 ) break ; v8 = v6 - Number ; * ( _BYTE * ) -- @@result@@ = * v8 ; v9 = v7 - Number ; if ( ! v9 ) break ; v10 = v8 - Number ; * ( _BYTE * ) -- @@result@@ = * v10 ; v11 = v9 - Number ; if ( ! v11 ) break ; v5 = v10 - Number ; * ( _BYTE * ) -- @@result@@ = * v5 ; v3 = v11 - Number ; } return @@result@@ ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r16"}, {"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "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"}]}