{"type": "func", "start": 6443732728, "end": 6443732940, "name": "common_xtox<ulong,wchar_t>", "pseudocode": "// \n// common_xtox<ulong,wchar_t> from 0x180138ef8 to 0x180138fcc (212 bytes)\n// \n// 2 xrefs:\n// > common_xtox_s<ulong,wchar_t> @ 0x180139030\n// > <???> @ 0x180203758\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 common_xtox<unsigned long,wchar_t>(\n        unsigned int a1,\n        __int16 *a2,\n        unsigned __int64 a3,\n        unsigned int a4,\n        char a5)\n{\n  __int16 *v8; // r10\n  unsigned __int64 v9; // rbx\n  __int16 *v10; // r8\n  _WORD *v11; // rsi\n  __int16 *v12; // r9\n  unsigned int v13; // edx\n  __int16 v14; // ax\n  __int16 v16; // cx\n\n  v8 = a2;\n  v9 = 0;\n  if ( a5 )\n  {\n    a1 = -a1;\n    *a2 = 45;\n    v9 = 1;\n    v8 = a2 + 1;\n  }\n  v10 = v8;\n  do\n  {\n    v11 = v8 + 1;\n    v12 = v8;\n    v13 = a1 % a4;\n    a1 /= a4;\n    v14 = 87;\n    if ( v13 <= 9 )\n      v14 = 48;\n    ++v9;\n    *v8 = v13 + v14;\n    if ( !a1 )\n      break;\n    ++v8;\n  }\n  while ( v9 < a3 );\n  if ( v9 < a3 )\n  {\n    *v11 = 0;\n    do\n    {\n      v16 = *v12;\n      *v12-- = *v10;\n      *v10++ = v16;\n    }\n    while ( v10 < v12 );\n    return 0;\n  }\n  else\n  {\n    *a2 = 0;\n    *errno() = 34;\n    invalid_parameter_noinfo();\n    return 34;\n  }\n}", "assembly": "; \n; common_xtox<ulong,wchar_t> from 0x180138ef8 to 0x180138fcc (212 bytes)\n; \n; 2 xrefs:\n; > common_xtox_s<ulong,wchar_t> @ 0x180139030\n; > <???> @ 0x180203758\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_0], rbx                                               ; +0x0, 0x180138ef8\nmov     [rsp+arg_8], rbp                                               ; +0x5, 0x180138efd\nmov     [rsp+arg_10], rsi                                              ; +0xa, 0x180138f02\npush    rdi                                                            ; +0xf, 0x180138f07\npush    r14                                                            ; +0x10, 0x180138f08\npush    r15                                                            ; +0x12, 0x180138f0a\nsub     rsp, 20h                                                       ; +0x14, 0x180138f0c\nxor     r15d, r15d                                                     ; +0x18, 0x180138f10\nmov     ebp, r9d                                                       ; +0x1b, 0x180138f13\nmov     rdi, r8                                                        ; +0x1e, 0x180138f16\nmov     r11, rdx                                                       ; +0x21, 0x180138f19\nmov     r10, rdx                                                       ; +0x24, 0x180138f1c\nmov     ebx, r15d                                                      ; +0x27, 0x180138f1f\ncmp     [rsp+38h+arg_20], r15b                                         ; +0x2a, 0x180138f22\njz      short loc_180138F39                                            ; +0x2f, 0x180138f27\nlea     eax, [r15+2Dh]                                                 ; +0x31, 0x180138f29\nneg     ecx                                                            ; +0x35, 0x180138f2d\nmov     [rdx], ax                                                      ; +0x37, 0x180138f2f\nlea     ebx, [rax-2Ch]                                                 ; +0x3a, 0x180138f32\nlea     r10, [rdx+2]                                                   ; +0x3d, 0x180138f35\nmov     r8, r10                                                        ; +0x41, 0x180138f39\nxor     edx, edx                                                       ; +0x44, 0x180138f3c\nlea     rsi, [r10+2]                                                   ; +0x46, 0x180138f3e\nmov     eax, ecx                                                       ; +0x4a, 0x180138f42\nmov     r9, r10                                                        ; +0x4c, 0x180138f44\ndiv     ebp                                                            ; +0x4f, 0x180138f47\nmov     ecx, eax                                                       ; +0x51, 0x180138f49\ncmp     edx, 9                                                         ; +0x53, 0x180138f4b\nmov     eax, 57h ; 'W'                                                 ; +0x56, 0x180138f4e\nlea     r14d, [rax-27h]                                                ; +0x5b, 0x180138f53\ncmovbe  ax, r14w                                                       ; +0x5f, 0x180138f57\ninc     rbx                                                            ; +0x64, 0x180138f5c\nadd     ax, dx                                                         ; +0x67, 0x180138f5f\nmov     [r10], ax                                                      ; +0x6a, 0x180138f62\ntest    ecx, ecx                                                       ; +0x6e, 0x180138f66\njz      short loc_180138F72                                            ; +0x70, 0x180138f68\nmov     r10, rsi                                                       ; +0x72, 0x180138f6a\ncmp     rbx, rdi                                                       ; +0x75, 0x180138f6d\njb      short loc_180138F3C                                            ; +0x78, 0x180138f70\ncmp     rbx, rdi                                                       ; +0x7a, 0x180138f72\njb      short loc_180138F90                                            ; +0x7d, 0x180138f75\nmov     [r11], r15w                                                    ; +0x7f, 0x180138f77\ncall    _errno                                                         ; +0x83, 0x180138f7b\nmov     ebx, 22h ; '\"'                                                 ; +0x88, 0x180138f80\nmov     [rax], ebx                                                     ; +0x8d, 0x180138f85\ncall    _invalid_parameter_noinfo                                      ; +0x8f, 0x180138f87\nmov     eax, ebx                                                       ; +0x94, 0x180138f8c\njmp     short loc_180138FB3                                            ; +0x96, 0x180138f8e\nmov     [rsi], r15w                                                    ; +0x98, 0x180138f90\nmovzx   eax, word ptr [r8]                                             ; +0x9c, 0x180138f94\nmovzx   ecx, word ptr [r9]                                             ; +0xa0, 0x180138f98\nmov     [r9], ax                                                       ; +0xa4, 0x180138f9c\nsub     r9, 2                                                          ; +0xa8, 0x180138fa0\nmov     [r8], cx                                                       ; +0xac, 0x180138fa4\nadd     r8, 2                                                          ; +0xb0, 0x180138fa8\ncmp     r8, r9                                                         ; +0xb4, 0x180138fac\njb      short loc_180138F94                                            ; +0xb7, 0x180138faf\nxor     eax, eax                                                       ; +0xb9, 0x180138fb1\nmov     rbx, [rsp+38h+arg_0]                                           ; +0xbb, 0x180138fb3\nmov     rbp, [rsp+38h+arg_8]                                           ; +0xc0, 0x180138fb8\nmov     rsi, [rsp+38h+arg_10]                                          ; +0xc5, 0x180138fbd\nadd     rsp, 20h                                                       ; +0xca, 0x180138fc2\npop     r15                                                            ; +0xce, 0x180138fc6\npop     r14                                                            ; +0xd0, 0x180138fc8\npop     rdi                                                            ; +0xd2, 0x180138fca\nretn                                                                   ; +0xd3, 0x180138fcb", "xrefs": ["common_xtox_s<ulong,wchar_t> @ 0x180139030", "<???> @ 0x180203758"], "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"}