; ; _wcstombs_l_helper from 0x18012b490 to 0x18012b7eb (859 bytes) ; ; 2 xrefs: ; > wcstombs @ 0x18012b7ef ; > @ 0x180202b1c ; ; 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 ; push rbp ; +0x0, 0x18012b490 push rbx ; +0x2, 0x18012b492 push rsi ; +0x3, 0x18012b493 push rdi ; +0x4, 0x18012b494 push r12 ; +0x5, 0x18012b495 push r14 ; +0x7, 0x18012b497 push r15 ; +0x9, 0x18012b499 lea rbp, [rsp-27h] ; +0xb, 0x18012b49b sub rsp, 90h ; +0x10, 0x18012b4a0 mov [rbp+57h+var_48], 0FFFFFFFFFFFFFFFEh ; +0x17, 0x18012b4a7 mov rax, cs:__security_cookie ; +0x1f, 0x18012b4af xor rax, rsp ; +0x26, 0x18012b4b6 mov [rbp+57h+var_38], rax ; +0x29, 0x18012b4b9 mov rsi, r8 ; +0x2d, 0x18012b4bd mov r14, rcx ; +0x30, 0x18012b4c0 mov qword ptr [rbp+57h+var_78], rdx ; +0x33, 0x18012b4c3 xor r15d, r15d ; +0x37, 0x18012b4c7 mov ebx, r15d ; +0x3a, 0x18012b4ca mov [rbp+57h+var_80], r15d ; +0x3d, 0x18012b4cd test rcx, rcx ; +0x41, 0x18012b4d1 jz short loc_18012B4E2 ; +0x44, 0x18012b4d4 test r8, r8 ; +0x46, 0x18012b4d6 jnz short loc_18012B4E2 ; +0x49, 0x18012b4d9 xor eax, eax ; +0x4b, 0x18012b4db jmp loc_18012B7CD ; +0x4d, 0x18012b4dd test rdx, rdx ; +0x52, 0x18012b4e2 jnz short loc_18012B500 ; +0x55, 0x18012b4e5 call _errno ; +0x57, 0x18012b4e7 mov dword ptr [rax], 16h ; +0x5c, 0x18012b4ec call _invalid_parameter_noinfo ; +0x62, 0x18012b4f2 or rax, 0FFFFFFFFFFFFFFFFh ; +0x67, 0x18012b4f7 jmp loc_18012B7CD ; +0x6b, 0x18012b4fb mov rdx, r9; struct __crt_locale_pointers * ; +0x70, 0x18012b500 lea rcx, [rbp+57h+var_68]; this ; +0x73, 0x18012b503 call ??0_LocaleUpdate@@QEAA@QEAU__crt_locale_pointers@@@Z ; +0x77, 0x18012b507 nop ; +0x7c, 0x18012b50c mov rax, [rbp+57h+var_60] ; +0x7d, 0x18012b50d mov r10d, [rax+0Ch] ; +0x81, 0x18012b511 cmp r10d, 0FDE9h ; +0x85, 0x18012b515 jnz short loc_18012B53D ; +0x8c, 0x18012b51c mov [rbp+57h+var_70], r15 ; +0x8e, 0x18012b51e lea r9, [rbp+57h+var_70]; unsigned __int64 ; +0x92, 0x18012b522 mov r8, rsi; wchar_t ** ; +0x96, 0x18012b526 lea rdx, [rbp+57h+var_78]; char * ; +0x99, 0x18012b529 mov rcx, r14; this ; +0x9d, 0x18012b52d call ?__wcsrtombs_utf8@__crt_mbstring@@YA_KPEADPEAPEB_W_KPEAU_Mbstatet@@@Z ; +0xa0, 0x18012b530 mov rbx, rax ; +0xa5, 0x18012b535 jmp loc_18012B7B6 ; +0xa8, 0x18012b538 test r14, r14 ; +0xad, 0x18012b53d jz loc_18012B728 ; +0xb0, 0x18012b540 cmp [rax+138h], r15 ; +0xb6, 0x18012b546 jnz short loc_18012B59B ; +0xbd, 0x18012b54d test rsi, rsi ; +0xbf, 0x18012b54f jz loc_18012B7B6 ; +0xc2, 0x18012b552 mov edx, 0FFh ; +0xc8, 0x18012b558 mov rcx, qword ptr [rbp+57h+var_78] ; +0xcd, 0x18012b55d cmp [rcx], dx ; +0xd1, 0x18012b561 ja short loc_18012B58D ; +0xd4, 0x18012b564 mov al, [rcx] ; +0xd6, 0x18012b566 mov [r14+rbx], al ; +0xd8, 0x18012b568 movzx eax, word ptr [rcx] ; +0xdc, 0x18012b56c add rcx, 2 ; +0xdf, 0x18012b56f mov qword ptr [rbp+57h+var_78], rcx ; +0xe3, 0x18012b573 test ax, ax ; +0xe7, 0x18012b577 jz loc_18012B7B6 ; +0xea, 0x18012b57a inc rbx ; +0xf0, 0x18012b580 cmp rbx, rsi ; +0xf3, 0x18012b583 jb short loc_18012B561 ; +0xf6, 0x18012b586 jmp loc_18012B7B6 ; +0xf8, 0x18012b588 call _errno ; +0xfd, 0x18012b58d or rbx, 0FFFFFFFFFFFFFFFFh ; +0x102, 0x18012b592 jmp loc_18012B7B0 ; +0x106, 0x18012b596 mov r8, qword ptr [rbp+57h+var_78] ; +0x10b, 0x18012b59b cmp dword ptr [rax+8], 1 ; +0x10f, 0x18012b59f jnz short loc_18012B61A ; +0x113, 0x18012b5a3 test rsi, rsi ; +0x115, 0x18012b5a5 jz short loc_18012B5D7 ; +0x118, 0x18012b5a8 mov rax, r8 ; +0x11a, 0x18012b5aa mov rcx, rsi ; +0x11d, 0x18012b5ad cmp [rax], r15w ; +0x120, 0x18012b5b0 jz short loc_18012B5C0 ; +0x124, 0x18012b5b4 add rax, 2 ; +0x126, 0x18012b5b6 sub rcx, 1 ; +0x12a, 0x18012b5ba jnz short loc_18012B5B0 ; +0x12e, 0x18012b5be test rcx, rcx ; +0x130, 0x18012b5c0 jz short loc_18012B5D7 ; +0x133, 0x18012b5c3 cmp [rax], r15w ; +0x135, 0x18012b5c5 jnz short loc_18012B5D7 ; +0x139, 0x18012b5c9 mov rsi, rax ; +0x13b, 0x18012b5cb sub rsi, r8 ; +0x13e, 0x18012b5ce sar rsi, 1 ; +0x141, 0x18012b5d1 inc rsi ; +0x144, 0x18012b5d4 lea rax, [rbp+57h+var_80] ; +0x147, 0x18012b5d7 mov [rsp+0C0h+var_88], rax ; +0x14b, 0x18012b5db mov [rsp+0C0h+var_90], r15 ; +0x150, 0x18012b5e0 mov [rsp+0C0h+var_98], esi ; +0x155, 0x18012b5e5 mov [rsp+0C0h+var_A0], r14 ; +0x159, 0x18012b5e9 mov r9d, esi ; +0x15e, 0x18012b5ee xor edx, edx ; +0x161, 0x18012b5f1 mov ecx, r10d ; +0x163, 0x18012b5f3 call __acrt_WideCharToMultiByte ; +0x166, 0x18012b5f6 movsxd rcx, eax ; +0x16b, 0x18012b5fb test eax, eax ; +0x16e, 0x18012b5fe jz short loc_18012B58D ; +0x170, 0x18012b600 cmp [rbp+57h+var_80], r15d ; +0x172, 0x18012b602 jnz short loc_18012B58D ; +0x176, 0x18012b606 lea rbx, [rcx-1] ; +0x178, 0x18012b608 cmp [r14+rcx-1], r15b ; +0x17c, 0x18012b60c cmovnz rbx, rcx ; +0x181, 0x18012b611 jmp loc_18012B7B6 ; +0x185, 0x18012b615 lea rax, [rbp+57h+var_80] ; +0x18a, 0x18012b61a mov [rsp+0C0h+var_88], rax ; +0x18e, 0x18012b61e mov [rsp+0C0h+var_90], r15 ; +0x193, 0x18012b623 mov [rsp+0C0h+var_98], esi ; +0x198, 0x18012b628 mov [rsp+0C0h+var_A0], r14 ; +0x19c, 0x18012b62c or rbx, 0FFFFFFFFFFFFFFFFh ; +0x1a1, 0x18012b631 mov r9d, ebx ; +0x1a5, 0x18012b635 xor edx, edx ; +0x1a8, 0x18012b638 mov ecx, r10d ; +0x1aa, 0x18012b63a call __acrt_WideCharToMultiByte ; +0x1ad, 0x18012b63d movsxd rdi, eax ; +0x1b2, 0x18012b642 cmp [rbp+57h+var_80], r15d ; +0x1b5, 0x18012b645 jnz loc_18012B7AB ; +0x1b9, 0x18012b649 test eax, eax ; +0x1bf, 0x18012b64f jz short loc_18012B65C ; +0x1c1, 0x18012b651 lea rbx, [rdi-1] ; +0x1c3, 0x18012b653 jmp loc_18012B7B6 ; +0x1c7, 0x18012b657 call cs:GetLastError ; +0x1cc, 0x18012b65c cmp eax, 7Ah ; 'z' ; +0x1d2, 0x18012b662 jnz loc_18012B7AB ; +0x1d5, 0x18012b665 test rsi, rsi ; +0x1db, 0x18012b66b jz loc_18012B7B9 ; +0x1de, 0x18012b66e lea r12d, [rax-75h] ; +0x1e4, 0x18012b674 mov rdx, qword ptr [rbp+57h+var_78] ; +0x1e8, 0x18012b678 mov rcx, [rbp+57h+var_60] ; +0x1ec, 0x18012b67c mov eax, [rcx+8] ; +0x1f0, 0x18012b680 cmp eax, r12d ; +0x1f3, 0x18012b683 cmovg eax, r12d ; +0x1f6, 0x18012b686 lea r8, [rbp+57h+var_80] ; +0x1fa, 0x18012b68a mov [rsp+0C0h+var_88], r8 ; +0x1fe, 0x18012b68e mov [rsp+0C0h+var_90], r15 ; +0x203, 0x18012b693 mov [rsp+0C0h+var_98], eax ; +0x208, 0x18012b698 lea rax, [rbp+57h+var_40] ; +0x20c, 0x18012b69c mov [rsp+0C0h+var_A0], rax ; +0x210, 0x18012b6a0 mov r9d, 1 ; +0x215, 0x18012b6a5 mov r8, rdx ; +0x21b, 0x18012b6ab xor edx, edx ; +0x21e, 0x18012b6ae mov ecx, [rcx+0Ch] ; +0x220, 0x18012b6b0 call __acrt_WideCharToMultiByte ; +0x223, 0x18012b6b3 test eax, eax ; +0x228, 0x18012b6b8 jz loc_18012B7AB ; +0x22a, 0x18012b6ba cmp [rbp+57h+var_80], r15d ; +0x230, 0x18012b6c0 jnz loc_18012B7AB ; +0x234, 0x18012b6c4 test eax, eax ; +0x23a, 0x18012b6ca js loc_18012B7AB ; +0x23c, 0x18012b6cc movsxd rdx, eax ; +0x242, 0x18012b6d2 cmp rdx, r12 ; +0x245, 0x18012b6d5 ja loc_18012B7AB ; +0x248, 0x18012b6d8 lea rax, [rdx+rdi] ; +0x24e, 0x18012b6de cmp rax, rsi ; +0x252, 0x18012b6e2 ja loc_18012B7B9 ; +0x255, 0x18012b6e5 mov rcx, r15 ; +0x25b, 0x18012b6eb test rdx, rdx ; +0x25e, 0x18012b6ee jle short loc_18012B70E ; +0x261, 0x18012b6f1 mov al, [rbp+rcx+57h+var_40] ; +0x263, 0x18012b6f3 mov [r14+rdi], al ; +0x267, 0x18012b6f7 test al, al ; +0x26b, 0x18012b6fb jz loc_18012B7B9 ; +0x26d, 0x18012b6fd inc rcx ; +0x273, 0x18012b703 inc rdi ; +0x276, 0x18012b706 cmp rcx, rdx ; +0x279, 0x18012b709 jl short loc_18012B6F3 ; +0x27c, 0x18012b70c mov rdx, qword ptr [rbp+57h+var_78] ; +0x27e, 0x18012b70e add rdx, 2 ; +0x282, 0x18012b712 mov qword ptr [rbp+57h+var_78], rdx ; +0x286, 0x18012b716 cmp rdi, rsi ; +0x28a, 0x18012b71a jnb loc_18012B7B9 ; +0x28d, 0x18012b71d jmp loc_18012B67C ; +0x293, 0x18012b723 cmp [rax+138h], r15 ; +0x298, 0x18012b728 jnz short loc_18012B76C ; +0x29f, 0x18012b72f mov rdi, r15 ; +0x2a1, 0x18012b731 mov rcx, qword ptr [rbp+57h+var_78] ; +0x2a4, 0x18012b734 movzx eax, word ptr [rcx] ; +0x2a8, 0x18012b738 test ax, ax ; +0x2ab, 0x18012b73b jz short loc_18012B7B9 ; +0x2ae, 0x18012b73e mov edx, 0FFh ; +0x2b0, 0x18012b740 cmp ax, dx ; +0x2b5, 0x18012b745 ja short loc_18012B75B ; +0x2b8, 0x18012b748 inc rdi ; +0x2ba, 0x18012b74a add rcx, 2 ; +0x2bd, 0x18012b74d movzx eax, word ptr [rcx] ; +0x2c1, 0x18012b751 test ax, ax ; +0x2c4, 0x18012b754 jnz short loc_18012B745 ; +0x2c7, 0x18012b757 jmp short loc_18012B7B9 ; +0x2c9, 0x18012b759 call _errno ; +0x2cb, 0x18012b75b mov dword ptr [rax], 2Ah ; '*' ; +0x2d0, 0x18012b760 or rdi, 0FFFFFFFFFFFFFFFFh ; +0x2d6, 0x18012b766 jmp short loc_18012B7B9 ; +0x2da, 0x18012b76a lea rax, [rbp+57h+var_80] ; +0x2dc, 0x18012b76c mov [rsp+0C0h+var_88], rax ; +0x2e0, 0x18012b770 mov [rsp+0C0h+var_90], r15 ; +0x2e5, 0x18012b775 mov [rsp+0C0h+var_98], r15d ; +0x2ea, 0x18012b77a mov [rsp+0C0h+var_A0], r15 ; +0x2ef, 0x18012b77f or rbx, 0FFFFFFFFFFFFFFFFh ; +0x2f4, 0x18012b784 mov r9d, ebx ; +0x2f8, 0x18012b788 mov r8, qword ptr [rbp+57h+var_78] ; +0x2fb, 0x18012b78b xor edx, edx ; +0x2ff, 0x18012b78f mov ecx, r10d ; +0x301, 0x18012b791 call __acrt_WideCharToMultiByte ; +0x304, 0x18012b794 movsxd rdi, eax ; +0x309, 0x18012b799 test eax, eax ; +0x30c, 0x18012b79c jz short loc_18012B7AB ; +0x30e, 0x18012b79e cmp [rbp+57h+var_80], r15d ; +0x310, 0x18012b7a0 jnz short loc_18012B7AB ; +0x314, 0x18012b7a4 dec rdi ; +0x316, 0x18012b7a6 jmp short loc_18012B7B9 ; +0x319, 0x18012b7a9 call _errno ; +0x31b, 0x18012b7ab mov dword ptr [rax], 2Ah ; '*' ; +0x320, 0x18012b7b0 mov rdi, rbx ; +0x326, 0x18012b7b6 cmp [rbp+57h+var_50], r15b ; +0x329, 0x18012b7b9 jz short loc_18012B7CA ; +0x32d, 0x18012b7bd mov rcx, [rbp+57h+var_68] ; +0x32f, 0x18012b7bf and dword ptr [rcx+3A8h], 0FFFFFFFDh ; +0x333, 0x18012b7c3 mov rax, rdi ; +0x33a, 0x18012b7ca mov rcx, [rbp+57h+var_38] ; +0x33d, 0x18012b7cd xor rcx, rsp; StackCookie ; +0x341, 0x18012b7d1 call __security_check_cookie ; +0x344, 0x18012b7d4 add rsp, 90h ; +0x349, 0x18012b7d9 pop r15 ; +0x350, 0x18012b7e0 pop r14 ; +0x352, 0x18012b7e2 pop r12 ; +0x354, 0x18012b7e4 pop rdi ; +0x356, 0x18012b7e6 pop rsi ; +0x357, 0x18012b7e7 pop rbx ; +0x358, 0x18012b7e8 pop rbp ; +0x359, 0x18012b7e9 retn ; +0x35a, 0x18012b7ea