{"type": "func", "start": 6443747920, "end": 6443748421, "name": "cvtdate", "pseudocode": "// \n// cvtdate from 0x18013ca50 to 0x18013cc45 (501 bytes)\n// \n// 4 xrefs:\n// > _isindst_nolock @ 0x18013c828\n// > _isindst_nolock @ 0x18013c964\n// > _isindst_nolock @ 0x18013c9a4\n// > <???> @ 0x180203a34\n// \n// This function is hookable on this platform!\n// \n// Using BromaIDA 8.0.0 @ https://github.com/Stazzical/BromaIDA\n// Using bindings at commit ba9f177b at Thu Jul 16 22:52:06 2026 from https://github.com/geode-sdk/bindings\n// \n\n__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)\n{\n  __int64 v12; // rbx\n  bool v15; // al\n  bool v16; // bp\n  int v17; // r10d\n  int v18; // r10d\n  int v19; // r8d\n  int v20; // eax\n  int v21; // ecx\n  int v22; // r8d\n  int v23; // r8d\n  __int64 result; // rax\n  bool v25; // sf\n  int v26; // [rsp+50h] [rbp+8h] BYREF\n\n  v26 = 0;\n  v12 = a4;\n  v15 = unknown_libname_67(a3);\n  v16 = v15;\n  if ( a2 == 1 )\n  {\n    if ( v15 )\n      v17 = dword_18017A634[v12];\n    else\n      v17 = dword_18017A5FC[v12];\n    v18 = v17 + 1;\n    v19 = (365 * a3 - 25563 + (a3 + 299) / 400 - (a3 - 1) / 100 + v18 + (a3 - 1) / 4) % 7;\n    v20 = a6 + v18 + 7 * a5 - v19 - 7;\n    if ( v19 > a6 )\n      v20 = a6 + v18 + 7 * a5 - v19;\n    if ( v16 )\n      v21 = dword_18017A638[v12];\n    else\n      v21 = dword_18017A600[v12];\n    v22 = v20;\n    if ( a5 == 5 && v20 > v21 )\n      v22 = v20 - 7;\n  }\n  else\n  {\n    if ( v15 )\n      v23 = dword_18017A634[v12];\n    else\n      v23 = dword_18017A5FC[v12];\n    v22 = a7 + v23;\n  }\n  result = (unsigned int)(a9 + 60 * a8);\n  if ( !a1 )\n  {\n    dword_1801B2144 = v22;\n    dword_1801B2148 = a11 + 1000 * (a10 + 60 * result);\n    dword_1801B2140 = a3;\n    return result;\n  }\n  dword_1801B2158 = a11 + 1000 * (a10 + 60 * result);\n  dword_1801B2154 = v22;\n  if ( (unsigned int)sub_18013C6FC(&v26) )\n    invoke_watson(nullptr, nullptr, nullptr, 0, 0);\n  v25 = 1000 * v26 + dword_1801B2158 < 0;\n  result = (unsigned int)(1000 * v26 + dword_1801B2158);\n  dword_1801B2158 += 1000 * v26;\n  if ( v25 )\n  {\n    result = (unsigned int)(result + 86400000);\n    --dword_1801B2154;\nLABEL_24:\n    dword_1801B2158 = result;\n    goto LABEL_25;\n  }\n  if ( (int)result >= 86400000 )\n  {\n    result = (unsigned int)(result - 86400000);\n    ++dword_1801B2154;\n    goto LABEL_24;\n  }\nLABEL_25:\n  dword_1801B2150 = a3;\n  return result;\n}", "assembly": "; \n; cvtdate from 0x18013ca50 to 0x18013cc45 (501 bytes)\n; \n; 4 xrefs:\n; > _isindst_nolock @ 0x18013c828\n; > _isindst_nolock @ 0x18013c964\n; > _isindst_nolock @ 0x18013c9a4\n; > <???> @ 0x180203a34\n; \n; This function is hookable on this platform!\n; \n; Using BromaIDA 8.0.0 @ https:;github.com/Stazzical/BromaIDA\n; Using bindings at commit ba9f177b at Thu Jul 16 22:52:06 2026 from https:;github.com/geode-sdk/bindings\n; \n\nmov     [rsp+arg_8], rbx                                               ; +0x0, 0x18013ca50\nmov     [rsp+arg_10], rbp                                              ; +0x5, 0x18013ca55\npush    rsi                                                            ; +0xa, 0x18013ca5a\npush    rdi                                                            ; +0xb, 0x18013ca5b\npush    r14                                                            ; +0xc, 0x18013ca5c\nsub     rsp, 30h                                                       ; +0xe, 0x18013ca5e\nand     [rsp+48h+arg_0], 0                                             ; +0x12, 0x18013ca62\nmov     r14d, ecx                                                      ; +0x17, 0x18013ca67\nmov     ecx, r8d                                                       ; +0x1a, 0x18013ca6a\nmovsxd  rbx, r9d                                                       ; +0x1d, 0x18013ca6d\nmov     esi, r8d                                                       ; +0x20, 0x18013ca70\nmov     edi, edx                                                       ; +0x23, 0x18013ca73\ncall    unknown_libname_67; Microsoft VisualC 64bit universal runtime  ; +0x25, 0x18013ca75\nlea     r11, cs:180000000h                                             ; +0x2a, 0x18013ca7a\nmov     bpl, al                                                        ; +0x31, 0x18013ca81\ncmp     edi, 1                                                         ; +0x34, 0x18013ca84\njnz     loc_18013CB5F                                                  ; +0x37, 0x18013ca87\ntest    al, al                                                         ; +0x3d, 0x18013ca8d\njz      short loc_18013CA9B                                            ; +0x3f, 0x18013ca8f\nmov     r10d, ds:rva dword_18017A634[r11+rbx*4]                        ; +0x41, 0x18013ca91\njmp     short loc_18013CAA3                                            ; +0x49, 0x18013ca99\nmov     r10d, ds:rva dword_18017A5FC[r11+rbx*4]                        ; +0x4b, 0x18013ca9b\ninc     r10d                                                           ; +0x53, 0x18013caa3\nlea     r8d, [rsi-1]                                                   ; +0x56, 0x18013caa6\nmov     edi, 51EB851Fh                                                 ; +0x5a, 0x18013caaa\nlea     ecx, [rsi+12Bh]                                                ; +0x5f, 0x18013caaf\nmov     eax, edi                                                       ; +0x65, 0x18013cab5\nimul    ecx                                                            ; +0x67, 0x18013cab7\nmov     eax, edi                                                       ; +0x69, 0x18013cab9\nmov     r9d, edx                                                       ; +0x6b, 0x18013cabb\nimul    r8d                                                            ; +0x6e, 0x18013cabe\nmov     eax, r8d                                                       ; +0x71, 0x18013cac1\nsar     r9d, 7                                                         ; +0x74, 0x18013cac4\nsar     edx, 5                                                         ; +0x78, 0x18013cac8\nmov     ecx, r9d                                                       ; +0x7b, 0x18013cacb\nshr     ecx, 1Fh                                                       ; +0x7e, 0x18013cace\nadd     r9d, ecx                                                       ; +0x81, 0x18013cad1\nmov     ecx, edx                                                       ; +0x84, 0x18013cad4\nshr     ecx, 1Fh                                                       ; +0x86, 0x18013cad6\nadd     edx, ecx                                                       ; +0x89, 0x18013cad9\nimul    ecx, esi, 16Dh                                                 ; +0x8b, 0x18013cadb\nsub     r9d, edx                                                       ; +0x91, 0x18013cae1\ncdq                                                                    ; +0x94, 0x18013cae4\nand     edx, 3                                                         ; +0x95, 0x18013cae5\nadd     ecx, 0FFFF9C25h                                                ; +0x98, 0x18013cae8\nlea     r8d, [rdx+rax]                                                 ; +0x9e, 0x18013caee\nmov     eax, 92492493h                                                 ; +0xa2, 0x18013caf2\nsar     r8d, 2                                                         ; +0xa7, 0x18013caf7\nadd     r8d, r10d                                                      ; +0xab, 0x18013cafb\nadd     r8d, r9d                                                       ; +0xae, 0x18013cafe\nadd     r8d, ecx                                                       ; +0xb1, 0x18013cb01\nimul    r8d                                                            ; +0xb4, 0x18013cb04\nadd     edx, r8d                                                       ; +0xb7, 0x18013cb07\nsar     edx, 2                                                         ; +0xba, 0x18013cb0a\nmov     eax, edx                                                       ; +0xbd, 0x18013cb0d\nshr     eax, 1Fh                                                       ; +0xbf, 0x18013cb0f\nadd     edx, eax                                                       ; +0xc2, 0x18013cb12\nimul    eax, edx, 7                                                    ; +0xc4, 0x18013cb14\nimul    edx, [rsp+48h+arg_20], 7                                       ; +0xc7, 0x18013cb17\nsub     r8d, eax                                                       ; +0xcc, 0x18013cb1c\nsub     edx, r8d                                                       ; +0xcf, 0x18013cb1f\nadd     edx, r10d                                                      ; +0xd2, 0x18013cb22\nadd     edx, [rsp+48h+arg_28]                                          ; +0xd5, 0x18013cb25\ncmp     r8d, [rsp+48h+arg_28]                                          ; +0xd9, 0x18013cb29\nlea     eax, [rdx-7]                                                   ; +0xde, 0x18013cb2e\ncmovg   eax, edx                                                       ; +0xe1, 0x18013cb31\ntest    bpl, bpl                                                       ; +0xe4, 0x18013cb34\njz      short loc_18013CB43                                            ; +0xe7, 0x18013cb37\nmov     ecx, ds:rva dword_18017A638[r11+rbx*4]                         ; +0xe9, 0x18013cb39\njmp     short loc_18013CB4B                                            ; +0xf1, 0x18013cb41\nmov     ecx, ds:rva dword_18017A600[r11+rbx*4]                         ; +0xf3, 0x18013cb43\ncmp     [rsp+48h+arg_20], 5                                            ; +0xfb, 0x18013cb4b\nmov     r8d, eax                                                       ; +0x100, 0x18013cb50\njnz     short loc_18013CB7E                                            ; +0x103, 0x18013cb53\ncmp     eax, ecx                                                       ; +0x105, 0x18013cb55\njle     short loc_18013CB7E                                            ; +0x107, 0x18013cb57\nlea     r8d, [rax-7]                                                   ; +0x109, 0x18013cb59\njmp     short loc_18013CB7E                                            ; +0x10d, 0x18013cb5d\ntest    bpl, bpl                                                       ; +0x10f, 0x18013cb5f\njz      short loc_18013CB6E                                            ; +0x112, 0x18013cb62\nmov     r8d, ds:rva dword_18017A634[r11+rbx*4]                         ; +0x114, 0x18013cb64\njmp     short loc_18013CB76                                            ; +0x11c, 0x18013cb6c\nmov     r8d, ds:rva dword_18017A5FC[r11+rbx*4]                         ; +0x11e, 0x18013cb6e\nadd     r8d, [rsp+48h+arg_30]                                          ; +0x126, 0x18013cb76\nimul    eax, [rsp+48h+arg_38], 3Ch ; '<'                               ; +0x12e, 0x18013cb7e\nadd     eax, [rsp+48h+arg_40]                                          ; +0x136, 0x18013cb86\nimul    ecx, eax, 3Ch ; '<'                                            ; +0x13d, 0x18013cb8d\nadd     ecx, [rsp+48h+arg_48]                                          ; +0x140, 0x18013cb90\nimul    ecx, 3E8h                                                      ; +0x147, 0x18013cb97\nadd     ecx, [rsp+48h+arg_50]                                          ; +0x14d, 0x18013cb9d\ntest    r14d, r14d                                                     ; +0x154, 0x18013cba4\njnz     short loc_18013CBCF                                            ; +0x157, 0x18013cba7\nmov     cs:dword_1801B2144, r8d                                        ; +0x159, 0x18013cba9\nmov     cs:dword_1801B2148, ecx                                        ; +0x160, 0x18013cbb0\nmov     cs:dword_1801B2140, esi                                        ; +0x166, 0x18013cbb6\nmov     rbx, [rsp+48h+arg_8]                                           ; +0x16c, 0x18013cbbc\nmov     rbp, [rsp+48h+arg_10]                                          ; +0x171, 0x18013cbc1\nadd     rsp, 30h                                                       ; +0x176, 0x18013cbc6\npop     r14                                                            ; +0x17a, 0x18013cbca\npop     rdi                                                            ; +0x17c, 0x18013cbcc\npop     rsi                                                            ; +0x17d, 0x18013cbcd\nretn                                                                   ; +0x17e, 0x18013cbce\nmov     cs:dword_1801B2158, ecx                                        ; +0x17f, 0x18013cbcf\nlea     rcx, [rsp+48h+arg_0]                                           ; +0x185, 0x18013cbd5\nmov     cs:dword_1801B2154, r8d                                        ; +0x18a, 0x18013cbda\ncall    sub_18013C6FC                                                  ; +0x191, 0x18013cbe1\ntest    eax, eax                                                       ; +0x196, 0x18013cbe6\njnz     short loc_18013CC2F                                            ; +0x198, 0x18013cbe8\nmov     eax, cs:dword_1801B2158                                        ; +0x19a, 0x18013cbea\nimul    ecx, [rsp+48h+arg_0], 3E8h                                     ; +0x1a0, 0x18013cbf0\nadd     eax, ecx                                                       ; +0x1a8, 0x18013cbf8\nmov     cs:dword_1801B2158, eax                                        ; +0x1aa, 0x18013cbfa\njns     short loc_18013CC0F                                            ; +0x1b0, 0x18013cc00\nadd     eax, 5265C00h                                                  ; +0x1b2, 0x18013cc02\ndec     cs:dword_1801B2154                                             ; +0x1b7, 0x18013cc07\njmp     short loc_18013CC21                                            ; +0x1bd, 0x18013cc0d\ncmp     eax, 5265C00h                                                  ; +0x1bf, 0x18013cc0f\njl      short loc_18013CC27                                            ; +0x1c4, 0x18013cc14\nadd     eax, 0FAD9A400h                                                ; +0x1c6, 0x18013cc16\ninc     cs:dword_1801B2154                                             ; +0x1cb, 0x18013cc1b\nmov     cs:dword_1801B2158, eax                                        ; +0x1d1, 0x18013cc21\nmov     cs:dword_1801B2150, esi                                        ; +0x1d7, 0x18013cc27\njmp     short loc_18013CBBC                                            ; +0x1dd, 0x18013cc2d\nand     [rsp+48h+var_28], 0                                            ; +0x1df, 0x18013cc2f\nxor     r9d, r9d; LineNo                                               ; +0x1e5, 0x18013cc35\nxor     r8d, r8d; FileName                                             ; +0x1e8, 0x18013cc38\nxor     edx, edx; FunctionName                                         ; +0x1eb, 0x18013cc3b\nxor     ecx, ecx; Expression                                           ; +0x1ed, 0x18013cc3d\ncall    _invoke_watson                                                 ; +0x1ef, 0x18013cc3f\ndb 0CCh                                                                ; +0x1f4, 0x18013cc44", "xrefs": ["_isindst_nolock @ 0x18013c828", "_isindst_nolock @ 0x18013c964", "_isindst_nolock @ 0x18013c9a4", "<???> @ 0x180203a34"], "is_objc": false, "is_arm32": false, "is_arm64": false, "bida_info": "8.0.0 @ https://github.com/Stazzical/BromaIDA", "bindings_info": "commit ba9f177b at Thu Jul 16 22:52:06 2026 from https://github.com/geode-sdk/bindings"}