{"type": "func", "start": 6443686108, "end": 6443686822, "name": "__multtenpow12", "pseudocode": "// \n// __multtenpow12 from 0x18012d8dc to 0x18012dba6 (714 bytes)\n// \n// 3 xrefs:\n// > __crt_stdio_output::output_processor<wchar_t,__crt_stdio_output::string_output_adapter<wchar_t>,__crt_stdio_output::standard_base<wchar_t,__crt_stdio_output::string_output_adapter<wchar_t>>>::process @ 0x18012cc6a\n// > sub_18012D200 @ 0x18012d222\n// > <???> @ 0x180202c78\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\nchar __fastcall _multtenpow12(__int64 a1, __int64 a2, __int64 a3)\n{\n  unsigned __int16 v3; // ax\n  __int16 v4; // si\n  __int64 v5; // rbx\n  char v6; // al\n  __int64 v7; // rdx\n  int v8; // ecx\n  int v10; // edx\n  __int64 v11; // rdi\n  __int16 v12; // ax\n  __int16 v13; // cx\n  bool v14; // r8\n  int v15; // ebp\n  int v16; // ecx\n  int v17; // [rsp+30h] [rbp-38h] BYREF\n  __int16 v18; // [rsp+34h] [rbp-34h]\n\n  v3 = *(_WORD *)(a1 + 66);\n  v4 = 120;\n  v5 = a1;\n  if ( v3 > 0x64u )\n  {\n    if ( v3 <= 0x67u )\n      goto LABEL_34;\n    if ( v3 != 105 )\n    {\n      switch ( v3 )\n      {\n        case 'n':\n          v6 = unknown_libname_52();\n          goto LABEL_35;\n        case 'o':\n          v8 = *(_DWORD *)(a1 + 48);\n          if ( (v8 & 0x20) != 0 )\n            *(_DWORD *)(v5 + 48) = v8 | 0x80;\n          v7 = 8;\n          a1 = v5;\n          goto LABEL_32;\n        case 'p':\n          *(_DWORD *)(a1 + 56) = 16;\n          *(_DWORD *)(a1 + 60) = 11;\nLABEL_25:\n          LOBYTE(a3) = 1;\n          v7 = 16;\nLABEL_33:\n          v6 = sub_18012E820(a1, v7, a3);\n          goto LABEL_35;\n        case 's':\nLABEL_23:\n          v6 = unknown_libname_55();\n          goto LABEL_35;\n      }\n      if ( v3 != 117 )\n      {\n        if ( v3 != 120 )\n          return 0;\n        v7 = 16;\n        goto LABEL_32;\n      }\nLABEL_31:\n      v7 = 10;\nLABEL_32:\n      a3 = 0;\n      goto LABEL_33;\n    }\nLABEL_30:\n    *(_DWORD *)(a1 + 48) |= 0x10u;\n    goto LABEL_31;\n  }\n  if ( v3 == 100 )\n    goto LABEL_30;\n  if ( v3 != 65 )\n  {\n    if ( v3 == 67 )\n    {\nLABEL_12:\n      v6 = unknown_libname_49(a1, 0);\n      goto LABEL_35;\n    }\n    if ( v3 <= 0x44u )\n      return 0;\n    if ( v3 > 0x47u )\n    {\n      if ( v3 != 83 )\n      {\n        if ( v3 != 88 )\n        {\n          if ( v3 == 90 )\n          {\n            v6 = unknown_libname_43();\n            goto LABEL_35;\n          }\n          if ( v3 != 97 )\n          {\n            if ( v3 == 99 )\n              goto LABEL_12;\n            return 0;\n          }\n          goto LABEL_34;\n        }\n        goto LABEL_25;\n      }\n      goto LABEL_23;\n    }\n  }\nLABEL_34:\n  v6 = unknown_libname_46();\nLABEL_35:\n  if ( !v6 )\n    return 0;\n  if ( !*(_BYTE *)(v5 + 64) )\n  {\n    v10 = *(_DWORD *)(v5 + 48);\n    v17 = 0;\n    v11 = 0;\n    v18 = 0;\n    if ( (v10 & 0x10) == 0 )\n      goto LABEL_47;\n    if ( (v10 & 0x40) != 0 )\n    {\n      v12 = 45;\n    }\n    else\n    {\n      if ( (v10 & 1) == 0 )\n      {\n        if ( (v10 & 2) == 0 )\n          goto LABEL_47;\n        LOWORD(v17) = 32;\nLABEL_46:\n        v11 = 1;\nLABEL_47:\n        v13 = *(_WORD *)(v5 + 66);\n        v14 = ((v13 - 88) & 0xFFDF) == 0 && (v10 & 0x20) != 0;\n        if ( v14 || ((v13 - 65) & 0xFFDF) == 0 )\n        {\n          *((_WORD *)&v17 + v11) = 48;\n          if ( v13 == 88 || v13 == 65 )\n            v4 = 88;\n          *((_WORD *)&v17 + v11 + 1) = v4;\n          LODWORD(v11) = v11 + 2;\n        }\n        v15 = *(_DWORD *)(v5 + 52) - *(_DWORD *)(v5 + 80) - v11;\n        if ( (v10 & 0xC) == 0 )\n          unknown_libname_36((__int64 *)(v5 + 1128), 32, v15, (int *)(v5 + 40));\n        unknown_libname_60(v5 + 1128, &v17, (unsigned int)v11, v5 + 40, v5 + 16);\n        v16 = *(_DWORD *)(v5 + 48);\n        if ( (v16 & 8) != 0 && (v16 & 4) == 0 )\n          unknown_libname_36((__int64 *)(v5 + 1128), 48, v15, (int *)(v5 + 40));\n        unknown_libname_58(v5, 0);\n        if ( *(int *)(v5 + 40) >= 0 && (*(_DWORD *)(v5 + 48) & 4) != 0 )\n          unknown_libname_36((__int64 *)(v5 + 1128), 32, v15, (int *)(v5 + 40));\n        return 1;\n      }\n      v12 = 43;\n    }\n    LOWORD(v17) = v12;\n    goto LABEL_46;\n  }\n  return 1;\n}", "assembly": "; \n; __multtenpow12 from 0x18012d8dc to 0x18012dba6 (714 bytes)\n; \n; 3 xrefs:\n; > __crt_stdio_output::output_processor<wchar_t,__crt_stdio_output::string_output_adapter<wchar_t>,__crt_stdio_output::standard_base<wchar_t,__crt_stdio_output::string_output_adapter<wchar_t>>>::process @ 0x18012cc6a\n; > sub_18012D200 @ 0x18012d222\n; > <???> @ 0x180202c78\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, 0x18012d8dc\nmov     [rsp+arg_10], rbp                                              ; +0x5, 0x18012d8e1\nmov     [rsp+arg_18], rsi                                              ; +0xa, 0x18012d8e6\npush    rdi                                                            ; +0xf, 0x18012d8eb\npush    r12                                                            ; +0x10, 0x18012d8ec\npush    r13                                                            ; +0x12, 0x18012d8ee\npush    r14                                                            ; +0x14, 0x18012d8f0\npush    r15                                                            ; +0x16, 0x18012d8f2\nsub     rsp, 40h                                                       ; +0x18, 0x18012d8f4\nmov     rax, cs:__security_cookie                                      ; +0x1c, 0x18012d8f8\nxor     rax, rsp                                                       ; +0x23, 0x18012d8ff\nmov     [rsp+68h+var_30], rax                                          ; +0x26, 0x18012d902\nmovzx   eax, word ptr [rcx+42h]                                        ; +0x2b, 0x18012d907\nmov     esi, 78h ; 'x'                                                 ; +0x2f, 0x18012d90b\nmov     rbx, rcx                                                       ; +0x34, 0x18012d910\nlea     ebp, [rsi-20h]                                                 ; +0x37, 0x18012d913\nlea     r15d, [rsi-77h]                                                ; +0x3a, 0x18012d916\ncmp     ax, 64h ; 'd'                                                  ; +0x3e, 0x18012d91a\nja      short loc_18012D985                                            ; +0x42, 0x18012d91e\njz      loc_18012DA03                                                  ; +0x44, 0x18012d920\ncmp     ax, 41h ; 'A'                                                  ; +0x4a, 0x18012d926\njz      loc_18012DA16                                                  ; +0x4e, 0x18012d92a\ncmp     ax, 43h ; 'C'                                                  ; +0x54, 0x18012d930\njz      short loc_18012D96F                                            ; +0x58, 0x18012d934\ncmp     ax, 44h ; 'D'                                                  ; +0x5a, 0x18012d936\njbe     loc_18012DA1F                                                  ; +0x5e, 0x18012d93a\ncmp     ax, 47h ; 'G'                                                  ; +0x64, 0x18012d940\njbe     loc_18012DA16                                                  ; +0x68, 0x18012d944\ncmp     ax, 53h ; 'S'                                                  ; +0x6e, 0x18012d94a\njz      short loc_18012D9BF                                            ; +0x72, 0x18012d94e\ncmp     ax, bp                                                         ; +0x74, 0x18012d950\njz      short loc_18012D9D4                                            ; +0x77, 0x18012d953\ncmp     ax, 5Ah ; 'Z'                                                  ; +0x79, 0x18012d955\njz      short loc_18012D97B                                            ; +0x7d, 0x18012d959\ncmp     ax, 61h ; 'a'                                                  ; +0x7f, 0x18012d95b\njz      loc_18012DA16                                                  ; +0x83, 0x18012d95f\ncmp     ax, 63h ; 'c'                                                  ; +0x89, 0x18012d965\njnz     loc_18012DA1F                                                  ; +0x8d, 0x18012d969\nxor     edx, edx                                                       ; +0x93, 0x18012d96f\ncall    unknown_libname_49; Microsoft VisualC 64bit universal runtime  ; +0x95, 0x18012d971\njmp     loc_18012DA1B                                                  ; +0x9a, 0x18012d976\ncall    unknown_libname_43; Microsoft VisualC 64bit universal runtime  ; +0x9f, 0x18012d97b\njmp     loc_18012DA1B                                                  ; +0xa4, 0x18012d980\ncmp     ax, 67h ; 'g'                                                  ; +0xa9, 0x18012d985\njbe     loc_18012DA16                                                  ; +0xad, 0x18012d989\ncmp     ax, 69h ; 'i'                                                  ; +0xb3, 0x18012d98f\njz      short loc_18012DA03                                            ; +0xb7, 0x18012d993\ncmp     ax, 6Eh ; 'n'                                                  ; +0xb9, 0x18012d995\njz      short loc_18012D9FC                                            ; +0xbd, 0x18012d999\ncmp     ax, 6Fh ; 'o'                                                  ; +0xbf, 0x18012d99b\njz      short loc_18012D9DE                                            ; +0xc3, 0x18012d99f\ncmp     ax, 70h ; 'p'                                                  ; +0xc5, 0x18012d9a1\njz      short loc_18012D9C6                                            ; +0xc9, 0x18012d9a5\ncmp     ax, 73h ; 's'                                                  ; +0xcb, 0x18012d9a7\njz      short loc_18012D9BF                                            ; +0xcf, 0x18012d9ab\ncmp     ax, 75h ; 'u'                                                  ; +0xd1, 0x18012d9ad\njz      short loc_18012DA07                                            ; +0xd5, 0x18012d9b1\ncmp     ax, si                                                         ; +0xd7, 0x18012d9b3\njnz     short loc_18012DA1F                                            ; +0xda, 0x18012d9b6\nmov     edx, 10h                                                       ; +0xdc, 0x18012d9b8\njmp     short loc_18012DA0C                                            ; +0xe1, 0x18012d9bd\ncall    unknown_libname_55; Microsoft VisualC 64bit universal runtime  ; +0xe3, 0x18012d9bf\njmp     short loc_18012DA1B                                            ; +0xe8, 0x18012d9c4\nmov     dword ptr [rcx+38h], 10h                                       ; +0xea, 0x18012d9c6\nmov     dword ptr [rcx+3Ch], 0Bh                                       ; +0xf1, 0x18012d9cd\nmov     r8b, r15b                                                      ; +0xf8, 0x18012d9d4\nmov     edx, 10h                                                       ; +0xfb, 0x18012d9d7\njmp     short loc_18012DA0F                                            ; +0x100, 0x18012d9dc\nmov     ecx, [rcx+30h]                                                 ; +0x102, 0x18012d9de\nmov     eax, ecx                                                       ; +0x105, 0x18012d9e1\nshr     eax, 5                                                         ; +0x107, 0x18012d9e3\ntest    r15b, al                                                       ; +0x10a, 0x18012d9e6\njz      short loc_18012D9F2                                            ; +0x10d, 0x18012d9e9\nbts     ecx, 7                                                         ; +0x10f, 0x18012d9eb\nmov     [rbx+30h], ecx                                                 ; +0x113, 0x18012d9ef\nmov     edx, 8                                                         ; +0x116, 0x18012d9f2\nmov     rcx, rbx                                                       ; +0x11b, 0x18012d9f7\njmp     short loc_18012DA0C                                            ; +0x11e, 0x18012d9fa\ncall    unknown_libname_52; Microsoft VisualC 64bit universal runtime  ; +0x120, 0x18012d9fc\njmp     short loc_18012DA1B                                            ; +0x125, 0x18012da01\nor      dword ptr [rcx+30h], 10h                                       ; +0x127, 0x18012da03\nmov     edx, 0Ah                                                       ; +0x12b, 0x18012da07\nxor     r8d, r8d                                                       ; +0x130, 0x18012da0c\ncall    sub_18012E820                                                  ; +0x133, 0x18012da0f\njmp     short loc_18012DA1B                                            ; +0x138, 0x18012da14\ncall    unknown_libname_46; Microsoft VisualC 64bit universal runtime  ; +0x13a, 0x18012da16\ntest    al, al                                                         ; +0x13f, 0x18012da1b\njnz     short loc_18012DA26                                            ; +0x141, 0x18012da1d\nxor     al, al                                                         ; +0x143, 0x18012da1f\njmp     loc_18012DB7B                                                  ; +0x145, 0x18012da21\ncmp     byte ptr [rbx+40h], 0                                          ; +0x14a, 0x18012da26\njnz     loc_18012DB78                                                  ; +0x14e, 0x18012da2a\nmov     edx, [rbx+30h]                                                 ; +0x154, 0x18012da30\nxor     eax, eax                                                       ; +0x157, 0x18012da33\nmov     [rsp+68h+var_38], eax                                          ; +0x159, 0x18012da35\nxor     edi, edi                                                       ; +0x15d, 0x18012da39\nmov     [rsp+68h+var_34], ax                                           ; +0x15f, 0x18012da3b\nmov     eax, edx                                                       ; +0x164, 0x18012da40\nshr     eax, 4                                                         ; +0x166, 0x18012da42\nlea     r13d, [rdi+20h]                                                ; +0x169, 0x18012da45\ntest    r15b, al                                                       ; +0x16d, 0x18012da49\njz      short loc_18012DA80                                            ; +0x170, 0x18012da4c\nmov     eax, edx                                                       ; +0x172, 0x18012da4e\nshr     eax, 6                                                         ; +0x174, 0x18012da50\ntest    r15b, al                                                       ; +0x177, 0x18012da53\njz      short loc_18012DA62                                            ; +0x17a, 0x18012da56\nlea     eax, [rdi+2Dh]                                                 ; +0x17c, 0x18012da58\nmov     word ptr [rsp+68h+var_38], ax                                  ; +0x17f, 0x18012da5b\njmp     short loc_18012DA7D                                            ; +0x184, 0x18012da60\ntest    r15b, dl                                                       ; +0x186, 0x18012da62\njz      short loc_18012DA6E                                            ; +0x189, 0x18012da65\nmov     eax, 2Bh ; '+'                                                 ; +0x18b, 0x18012da67\njmp     short loc_18012DA5B                                            ; +0x190, 0x18012da6c\nmov     eax, edx                                                       ; +0x192, 0x18012da6e\nshr     eax, 1                                                         ; +0x194, 0x18012da70\ntest    r15b, al                                                       ; +0x196, 0x18012da72\njz      short loc_18012DA80                                            ; +0x199, 0x18012da75\nmov     word ptr [rsp+68h+var_38], r13w                                ; +0x19b, 0x18012da77\nmov     rdi, r15                                                       ; +0x1a1, 0x18012da7d\nmovzx   ecx, word ptr [rbx+42h]                                        ; +0x1a4, 0x18012da80\nmov     r9d, 0FFDFh                                                    ; +0x1a8, 0x18012da84\nmovzx   eax, cx                                                        ; +0x1ae, 0x18012da8a\nsub     ax, bp                                                         ; +0x1b1, 0x18012da8d\ntest    r9w, ax                                                        ; +0x1b4, 0x18012da90\njnz     short loc_18012DAA5                                            ; +0x1b8, 0x18012da94\nmov     eax, edx                                                       ; +0x1ba, 0x18012da96\nshr     eax, 5                                                         ; +0x1bc, 0x18012da98\ntest    r15b, al                                                       ; +0x1bf, 0x18012da9b\njz      short loc_18012DAA5                                            ; +0x1c2, 0x18012da9e\nmov     r8b, r15b                                                      ; +0x1c4, 0x18012daa0\njmp     short loc_18012DAA8                                            ; +0x1c7, 0x18012daa3\nxor     r8b, r8b                                                       ; +0x1c9, 0x18012daa5\nlea     eax, [rcx-41h]                                                 ; +0x1cc, 0x18012daa8\nmov     r12d, 30h ; '0'                                                ; +0x1cf, 0x18012daab\ntest    r9w, ax                                                        ; +0x1d5, 0x18012dab1\nsetz    al                                                             ; +0x1d9, 0x18012dab5\ntest    r8b, r8b                                                       ; +0x1dc, 0x18012dab8\njnz     short loc_18012DAC1                                            ; +0x1df, 0x18012dabb\ntest    al, al                                                         ; +0x1e1, 0x18012dabd\njz      short loc_18012DADE                                            ; +0x1e3, 0x18012dabf\nmov     word ptr [rsp+rdi*2+68h+var_38], r12w                          ; +0x1e5, 0x18012dac1\ncmp     cx, bp                                                         ; +0x1eb, 0x18012dac7\njz      short loc_18012DAD2                                            ; +0x1ee, 0x18012daca\ncmp     cx, 41h ; 'A'                                                  ; +0x1f0, 0x18012dacc\njnz     short loc_18012DAD5                                            ; +0x1f4, 0x18012dad0\nmovzx   esi, bp                                                        ; +0x1f6, 0x18012dad2\nmov     word ptr [rsp+rdi*2+68h+var_38+2], si                          ; +0x1f9, 0x18012dad5\nadd     rdi, 2                                                         ; +0x1fe, 0x18012dada\nmov     ebp, [rbx+34h]                                                 ; +0x202, 0x18012dade\nlea     r14, [rbx+28h]                                                 ; +0x205, 0x18012dae1\nsub     ebp, [rbx+50h]                                                 ; +0x209, 0x18012dae5\nlea     rsi, [rbx+468h]                                                ; +0x20c, 0x18012dae8\nsub     ebp, edi                                                       ; +0x213, 0x18012daef\ntest    dl, 0Ch                                                        ; +0x215, 0x18012daf1\njnz     short loc_18012DB07                                            ; +0x218, 0x18012daf4\nmov     r9, r14                                                        ; +0x21a, 0x18012daf6\nmov     r8d, ebp                                                       ; +0x21d, 0x18012daf9\nmov     dl, r13b                                                       ; +0x220, 0x18012dafc\nmov     rcx, rsi                                                       ; +0x223, 0x18012daff\ncall    unknown_libname_36; Microsoft VisualC 64bit universal runtime  ; +0x226, 0x18012db02\nlea     rax, [rbx+10h]                                                 ; +0x22b, 0x18012db07\nmov     r9, r14                                                        ; +0x22f, 0x18012db0b\nmov     r8d, edi                                                       ; +0x232, 0x18012db0e\nmov     [rsp+68h+var_48], rax                                          ; +0x235, 0x18012db11\nlea     rdx, [rsp+68h+var_38]                                          ; +0x23a, 0x18012db16\nmov     rcx, rsi                                                       ; +0x23f, 0x18012db1b\ncall    unknown_libname_60; Microsoft VisualC 64bit universal runtime  ; +0x242, 0x18012db1e\nmov     ecx, [rbx+30h]                                                 ; +0x247, 0x18012db23\nmov     eax, ecx                                                       ; +0x24a, 0x18012db26\nshr     eax, 3                                                         ; +0x24c, 0x18012db28\ntest    r15b, al                                                       ; +0x24f, 0x18012db2b\njz      short loc_18012DB49                                            ; +0x252, 0x18012db2e\nshr     ecx, 2                                                         ; +0x254, 0x18012db30\ntest    r15b, cl                                                       ; +0x257, 0x18012db33\njnz     short loc_18012DB49                                            ; +0x25a, 0x18012db36\nmov     r9, r14                                                        ; +0x25c, 0x18012db38\nmov     r8d, ebp                                                       ; +0x25f, 0x18012db3b\nmov     dl, r12b                                                       ; +0x262, 0x18012db3e\nmov     rcx, rsi                                                       ; +0x265, 0x18012db41\ncall    unknown_libname_36; Microsoft VisualC 64bit universal runtime  ; +0x268, 0x18012db44\nxor     edx, edx                                                       ; +0x26d, 0x18012db49\nmov     rcx, rbx                                                       ; +0x26f, 0x18012db4b\ncall    unknown_libname_58; Microsoft VisualC 64bit universal runtime  ; +0x272, 0x18012db4e\nlea     r9, [rbx+28h]                                                  ; +0x277, 0x18012db53\ncmp     dword ptr [r9], 0                                              ; +0x27b, 0x18012db57\njl      short loc_18012DB78                                            ; +0x27f, 0x18012db5b\nmov     r10d, [rbx+30h]                                                ; +0x281, 0x18012db5d\nshr     r10d, 2                                                        ; +0x285, 0x18012db61\ntest    r15b, r10b                                                     ; +0x289, 0x18012db65\njz      short loc_18012DB78                                            ; +0x28c, 0x18012db68\nmov     r8d, ebp                                                       ; +0x28e, 0x18012db6a\nmov     dl, r13b                                                       ; +0x291, 0x18012db6d\nmov     rcx, rsi                                                       ; +0x294, 0x18012db70\ncall    unknown_libname_36; Microsoft VisualC 64bit universal runtime  ; +0x297, 0x18012db73\nmov     al, r15b                                                       ; +0x29c, 0x18012db78\nmov     rcx, [rsp+68h+var_30]                                          ; +0x29f, 0x18012db7b\nxor     rcx, rsp; StackCookie                                          ; +0x2a4, 0x18012db80\ncall    __security_check_cookie                                        ; +0x2a7, 0x18012db83\nlea     r11, [rsp+68h+var_28]                                          ; +0x2ac, 0x18012db88\nmov     rbx, [r11+38h]                                                 ; +0x2b1, 0x18012db8d\nmov     rbp, [r11+40h]                                                 ; +0x2b5, 0x18012db91\nmov     rsi, [r11+48h]                                                 ; +0x2b9, 0x18012db95\nmov     rsp, r11                                                       ; +0x2bd, 0x18012db99\npop     r15                                                            ; +0x2c0, 0x18012db9c\npop     r14                                                            ; +0x2c2, 0x18012db9e\npop     r13                                                            ; +0x2c4, 0x18012dba0\npop     r12                                                            ; +0x2c6, 0x18012dba2\npop     rdi                                                            ; +0x2c8, 0x18012dba4\nretn                                                                   ; +0x2c9, 0x18012dba5", "xrefs": ["__crt_stdio_output::output_processor<wchar_t,__crt_stdio_output::string_output_adapter<wchar_t>,__crt_stdio_output::standard_base<wchar_t,__crt_stdio_output::string_output_adapter<wchar_t>>>::process @ 0x18012cc6a", "sub_18012D200 @ 0x18012d222", "<???> @ 0x180202c78"], "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"}