__int64 __fastcall sub_9A4(char *a1, __int64 a2, __int64 a3, __int64 a4) { __int64 v4; // r10 __int64 result; // rax unsigned __int8 v7; // di int v8; // [rsp+28h] [rbp-20h] char v9; // [rsp+58h] [rbp+10h] BYREF char v10; // [rsp+60h] [rbp+18h] BYREF char v11; // [rsp+68h] [rbp+20h] BYREF unsigned __int8 v12; // [rsp+69h] [rbp+21h] char v13; // [rsp+6Ah] [rbp+22h] char v14; // [rsp+6Bh] [rbp+23h] v4 = qword_7920; /*0x9ae*/ result = 0; /*0x9b5*/ if ( !qword_7920 ) /*0x9bd*/ { result = (*(__int64 (__fastcall **)(void *, _QWORD, __int64 *))(qword_79B8 + 320))(&unk_7450, 0, &qword_7920); /*0x9d6*/ if ( result < 0 ) /*0x9df*/ { qword_7920 = 0; /*0x9e1*/ return result; /*0x9e1*/ } v4 = qword_7920; /*0x9f4*/ } v7 = 0; /*0x9fb*/ if ( a1[1] ) /*0x9fe*/ { while ( 1 ) /*0xa06*/ { LOBYTE(a4) = 18; /*0xa06*/ v11 = *a1; /*0xa09*/ LOBYTE(a2) = 56; /*0xa14*/ v12 = v7; /*0xa16*/ v14 = 0; /*0xa1b*/ v9 = 1; /*0xa20*/ v13 = a1[v7 + 2]; /*0xa42*/ LOBYTE(v8) = 4; /*0xa49*/ result = (*(__int64 (__fastcall **)(__int64, __int64, _QWORD, __int64, char *, int, char *, char *))(v4 + 16))( /*0xa53*/ v4, a2, 0, a4, &v11, v8, &v10, &v9); if ( ++v7 >= (unsigned __int8)a1[1] ) /*0xa5e*/ break; /*0xa5e*/ v4 = qword_7920; /*0xa60*/ } } return result; /*0x9ee*/ }