{"type": "func", "start": 6443725348, "end": 6443725465, "name": "_calloc_base", "pseudocode": "// \n// _calloc_base from 0x180137224 to 0x180137299 (117 bytes)\n// \n// 31 xrefs:\n// > j__calloc_base @ 0x18012b7f4\n// > __acrt_initialize_stdio @ 0x18012f898\n// > __acrt_initialize_stdio @ 0x18012f8c2\n// > create_thread_parameter @ 0x180130a6d\n// > __acrt_allocate_buffer_for_argv @ 0x180131c8d\n// > create_environment<char> @ 0x180131f5f\n// > create_environment<char> @ 0x180131f92\n// > create_environment<wchar_t> @ 0x18013206e\n// > create_environment<wchar_t> @ 0x1801320a6\n// > initialize_environment_by_cloning_nolock<char> @ 0x180132214\n// > initialize_environment_by_cloning_nolock<wchar_t> @ 0x1801322d8\n// > _getdrive @ 0x18013479a\n// > __acrt_getptd @ 0x180135310\n// > __acrt_getptd_head @ 0x1801353cf\n// > __acrt_getptd_noexit @ 0x18013548c\n// > __acrt_lowio_create_handle_array @ 0x180135fe0\n// > _lambda_b4f66040be5f354a654fb75160c27bfc_::operator @ 0x180139496\n// > copy_and_add_argument_to_buffer<char> @ 0x180139cc0\n// > copy_and_add_argument_to_buffer<char> @ 0x180139d23\n// > common_set_variable_in_environment_nolock<char> @ 0x18013ae90\n// > common_set_variable_in_environment_nolock<char> @ 0x18013aec9\n// > common_set_variable_in_environment_nolock<char> @ 0x18013b01c\n// > common_set_variable_in_environment_nolock<wchar_t> @ 0x18013b1b2\n// > common_set_variable_in_environment_nolock<wchar_t> @ 0x18013b1eb\n// > common_set_variable_in_environment_nolock<wchar_t> @ 0x18013b33e\n// > copy_environment<char> @ 0x18013b440\n// > copy_environment<char> @ 0x18013b471\n// > copy_environment<wchar_t> @ 0x18013b533\n// > copy_environment<wchar_t> @ 0x18013b564\n// > __acrt_stdio_allocate_buffer_nolock @ 0x180142097\n// > <???> @ 0x1802035c0\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\nvoid *__cdecl calloc_base(size_t Count, size_t Size)\n{\n  SIZE_T v2; // rbx\n  void *result; // rax\n\n  if ( Count && 0xFFFFFFFFFFFFFFE0uLL / Count < Size )\n  {\nLABEL_10:\n    *errno() = 12;\n    return nullptr;\n  }\n  else\n  {\n    v2 = Size * Count;\n    if ( !(Size * Count) )\n      v2 = 1;\n    while ( 1 )\n    {\n      result = HeapAlloc(hHeap, 8u, v2);\n      if ( result )\n        break;\n      if ( !(unsigned int)sub_18013BEC4() || !callnewh(v2) )\n        goto LABEL_10;\n    }\n  }\n  return result;\n}", "assembly": "; \n; _calloc_base from 0x180137224 to 0x180137299 (117 bytes)\n; \n; 31 xrefs:\n; > j__calloc_base @ 0x18012b7f4\n; > __acrt_initialize_stdio @ 0x18012f898\n; > __acrt_initialize_stdio @ 0x18012f8c2\n; > create_thread_parameter @ 0x180130a6d\n; > __acrt_allocate_buffer_for_argv @ 0x180131c8d\n; > create_environment<char> @ 0x180131f5f\n; > create_environment<char> @ 0x180131f92\n; > create_environment<wchar_t> @ 0x18013206e\n; > create_environment<wchar_t> @ 0x1801320a6\n; > initialize_environment_by_cloning_nolock<char> @ 0x180132214\n; > initialize_environment_by_cloning_nolock<wchar_t> @ 0x1801322d8\n; > _getdrive @ 0x18013479a\n; > __acrt_getptd @ 0x180135310\n; > __acrt_getptd_head @ 0x1801353cf\n; > __acrt_getptd_noexit @ 0x18013548c\n; > __acrt_lowio_create_handle_array @ 0x180135fe0\n; > _lambda_b4f66040be5f354a654fb75160c27bfc_::operator @ 0x180139496\n; > copy_and_add_argument_to_buffer<char> @ 0x180139cc0\n; > copy_and_add_argument_to_buffer<char> @ 0x180139d23\n; > common_set_variable_in_environment_nolock<char> @ 0x18013ae90\n; > common_set_variable_in_environment_nolock<char> @ 0x18013aec9\n; > common_set_variable_in_environment_nolock<char> @ 0x18013b01c\n; > common_set_variable_in_environment_nolock<wchar_t> @ 0x18013b1b2\n; > common_set_variable_in_environment_nolock<wchar_t> @ 0x18013b1eb\n; > common_set_variable_in_environment_nolock<wchar_t> @ 0x18013b33e\n; > copy_environment<char> @ 0x18013b440\n; > copy_environment<char> @ 0x18013b471\n; > copy_environment<wchar_t> @ 0x18013b533\n; > copy_environment<wchar_t> @ 0x18013b564\n; > __acrt_stdio_allocate_buffer_nolock @ 0x180142097\n; > <???> @ 0x1802035c0\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\npush    rbx                                                            ; +0x0, 0x180137224\nsub     rsp, 20h                                                       ; +0x2, 0x180137226\nmov     r8, rdx                                                        ; +0x6, 0x18013722a\nmov     rbx, rcx                                                       ; +0x9, 0x18013722d\ntest    rcx, rcx                                                       ; +0xc, 0x180137230\njz      short loc_180137243                                            ; +0xf, 0x180137233\nxor     edx, edx                                                       ; +0x11, 0x180137235\nlea     rax, [rdx-20h]                                                 ; +0x13, 0x180137237\ndiv     rbx                                                            ; +0x17, 0x18013723b\ncmp     rax, r8                                                        ; +0x1a, 0x18013723e\njb      short loc_180137286                                            ; +0x1d, 0x180137241\nimul    rbx, r8                                                        ; +0x1f, 0x180137243\nmov     eax, 1                                                         ; +0x23, 0x180137247\ntest    rbx, rbx                                                       ; +0x28, 0x18013724c\ncmovz   rbx, rax                                                       ; +0x2b, 0x18013724f\njmp     short loc_18013726A                                            ; +0x2f, 0x180137253\ncall    sub_18013BEC4                                                  ; +0x31, 0x180137255\ntest    eax, eax                                                       ; +0x36, 0x18013725a\njz      short loc_180137286                                            ; +0x38, 0x18013725c\nmov     rcx, rbx; Size                                                 ; +0x3a, 0x18013725e\ncall    _callnewh                                                      ; +0x3d, 0x180137261\ntest    eax, eax                                                       ; +0x42, 0x180137266\njz      short loc_180137286                                            ; +0x44, 0x180137268\nmov     rcx, cs:hHeap; hHeap                                           ; +0x46, 0x18013726a\nmov     r8, rbx; dwBytes                                               ; +0x4d, 0x180137271\nmov     edx, 8; dwFlags                                                ; +0x50, 0x180137274\ncall    cs:HeapAlloc                                                   ; +0x55, 0x180137279\ntest    rax, rax                                                       ; +0x5b, 0x18013727f\njz      short loc_180137255                                            ; +0x5e, 0x180137282\njmp     short loc_180137293                                            ; +0x60, 0x180137284\ncall    _errno                                                         ; +0x62, 0x180137286\nmov     dword ptr [rax], 0Ch                                           ; +0x67, 0x18013728b\nxor     eax, eax                                                       ; +0x6d, 0x180137291\nadd     rsp, 20h                                                       ; +0x6f, 0x180137293\npop     rbx                                                            ; +0x73, 0x180137297\nretn                                                                   ; +0x74, 0x180137298", "xrefs": ["j__calloc_base @ 0x18012b7f4", "__acrt_initialize_stdio @ 0x18012f898", "__acrt_initialize_stdio @ 0x18012f8c2", "create_thread_parameter @ 0x180130a6d", "__acrt_allocate_buffer_for_argv @ 0x180131c8d", "create_environment<char> @ 0x180131f5f", "create_environment<char> @ 0x180131f92", "create_environment<wchar_t> @ 0x18013206e", "create_environment<wchar_t> @ 0x1801320a6", "initialize_environment_by_cloning_nolock<char> @ 0x180132214", "initialize_environment_by_cloning_nolock<wchar_t> @ 0x1801322d8", "_getdrive @ 0x18013479a", "__acrt_getptd @ 0x180135310", "__acrt_getptd_head @ 0x1801353cf", "__acrt_getptd_noexit @ 0x18013548c", "__acrt_lowio_create_handle_array @ 0x180135fe0", "_lambda_b4f66040be5f354a654fb75160c27bfc_::operator @ 0x180139496", "copy_and_add_argument_to_buffer<char> @ 0x180139cc0", "copy_and_add_argument_to_buffer<char> @ 0x180139d23", "common_set_variable_in_environment_nolock<char> @ 0x18013ae90", "common_set_variable_in_environment_nolock<char> @ 0x18013aec9", "common_set_variable_in_environment_nolock<char> @ 0x18013b01c", "common_set_variable_in_environment_nolock<wchar_t> @ 0x18013b1b2", "common_set_variable_in_environment_nolock<wchar_t> @ 0x18013b1eb", "common_set_variable_in_environment_nolock<wchar_t> @ 0x18013b33e", "copy_environment<char> @ 0x18013b440", "copy_environment<char> @ 0x18013b471", "copy_environment<wchar_t> @ 0x18013b533", "copy_environment<wchar_t> @ 0x18013b564", "__acrt_stdio_allocate_buffer_nolock @ 0x180142097", "<???> @ 0x1802035c0"], "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"}