// // cvtdate from 0x18013ca50 to 0x18013cc45 (501 bytes) // // 4 xrefs: // > _isindst_nolock @ 0x18013c828 // > _isindst_nolock @ 0x18013c964 // > _isindst_nolock @ 0x18013c9a4 // > @ 0x180203a34 // // This function is hookable on this platform! // // Using BromaIDA 8.0.0 @ https://github.com/Stazzical/BromaIDA // Using bindings at commit ba9f177b at Thu Jul 16 22:52:06 2026 from https://github.com/geode-sdk/bindings // __int64 __fastcall cvtdate(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10, int a11) { __int64 v12; // rbx bool v15; // al bool v16; // bp int v17; // r10d int v18; // r10d int v19; // r8d int v20; // eax int v21; // ecx int v22; // r8d int v23; // r8d __int64 result; // rax bool v25; // sf int v26; // [rsp+50h] [rbp+8h] BYREF v26 = 0; v12 = a4; v15 = unknown_libname_67(a3); v16 = v15; if ( a2 == 1 ) { if ( v15 ) v17 = dword_18017A634[v12]; else v17 = dword_18017A5FC[v12]; v18 = v17 + 1; v19 = (365 * a3 - 25563 + (a3 + 299) / 400 - (a3 - 1) / 100 + v18 + (a3 - 1) / 4) % 7; v20 = a6 + v18 + 7 * a5 - v19 - 7; if ( v19 > a6 ) v20 = a6 + v18 + 7 * a5 - v19; if ( v16 ) v21 = dword_18017A638[v12]; else v21 = dword_18017A600[v12]; v22 = v20; if ( a5 == 5 && v20 > v21 ) v22 = v20 - 7; } else { if ( v15 ) v23 = dword_18017A634[v12]; else v23 = dword_18017A5FC[v12]; v22 = a7 + v23; } result = (unsigned int)(a9 + 60 * a8); if ( !a1 ) { dword_1801B2144 = v22; dword_1801B2148 = a11 + 1000 * (a10 + 60 * result); dword_1801B2140 = a3; return result; } dword_1801B2158 = a11 + 1000 * (a10 + 60 * result); dword_1801B2154 = v22; if ( (unsigned int)sub_18013C6FC(&v26) ) invoke_watson(nullptr, nullptr, nullptr, 0, 0); v25 = 1000 * v26 + dword_1801B2158 < 0; result = (unsigned int)(1000 * v26 + dword_1801B2158); dword_1801B2158 += 1000 * v26; if ( v25 ) { result = (unsigned int)(result + 86400000); --dword_1801B2154; LABEL_24: dword_1801B2158 = result; goto LABEL_25; } if ( (int)result >= 86400000 ) { result = (unsigned int)(result - 86400000); ++dword_1801B2154; goto LABEL_24; } LABEL_25: dword_1801B2150 = a3; return result; }