; ; __crt_mbstring::__wcsrtombs_utf8 from 0x180137108 to 0x180137223 (283 bytes) ; ; 2 xrefs: ; > _wcstombs_l_helper @ 0x18012b530 ; > @ 0x1802035b4 ; ; 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 ; mov [rsp+arg_10], rbx ; +0x0, 0x180137108 push rbp ; +0x5, 0x18013710d push rsi ; +0x6, 0x18013710e push rdi ; +0x7, 0x18013710f push r12 ; +0x8, 0x180137110 push r13 ; +0xa, 0x180137112 push r14 ; +0xc, 0x180137114 push r15 ; +0xe, 0x180137116 sub rsp, 40h ; +0x10, 0x180137118 mov rax, cs:__security_cookie ; +0x14, 0x18013711c xor rax, rsp ; +0x1b, 0x180137123 mov [rsp+78h+var_48], rax ; +0x1e, 0x180137126 mov rsi, [rdx] ; +0x23, 0x18013712b mov rbp, r9 ; +0x26, 0x18013712e mov [rsp+78h+var_58], r9 ; +0x29, 0x180137131 mov r13, r8 ; +0x2e, 0x180137136 mov r14, rdx ; +0x31, 0x180137139 mov r15, rcx ; +0x34, 0x18013713c test rcx, rcx ; +0x37, 0x18013713f jz loc_1801371CB ; +0x3a, 0x180137142 mov rbx, rcx ; +0x40, 0x180137148 mov rdi, rsi ; +0x43, 0x18013714b movzx edx, word ptr [rsi]; char * ; +0x46, 0x18013714e lea r12, [rsp+78h+var_50] ; +0x49, 0x180137151 cmp r13, 4 ; +0x4e, 0x180137156 mov r8, rbp; char16_t ; +0x52, 0x18013715a cmovnb r12, rbx ; +0x55, 0x18013715d mov rcx, r12; this ; +0x59, 0x180137161 call ?__c16rtomb_utf8@__crt_mbstring@@YA_KPEAD_SPEAU_Mbstatet@@@Z ; +0x5c, 0x180137164 mov rbp, rax ; +0x61, 0x180137169 cmp rax, 0FFFFFFFFFFFFFFFFh ; +0x64, 0x18013716c jz short loc_1801371C2 ; +0x68, 0x180137170 cmp r12, rbx ; +0x6a, 0x180137172 jz short loc_18013718A ; +0x6d, 0x180137175 cmp r13, rax ; +0x6f, 0x180137177 jb short loc_1801371B7 ; +0x72, 0x18013717a mov r8, rax; Size ; +0x74, 0x18013717c mov rdx, r12; Src ; +0x77, 0x18013717f mov rcx, rbx; void * ; +0x7a, 0x180137182 call memmove ; +0x7d, 0x180137185 test rbp, rbp ; +0x82, 0x18013718a jz short loc_180137199 ; +0x85, 0x18013718d lea rax, [rbx+rbp] ; +0x87, 0x18013718f cmp byte ptr [rax-1], 0 ; +0x8b, 0x180137193 jz short loc_1801371B1 ; +0x8f, 0x180137197 add rsi, 2 ; +0x91, 0x180137199 test rbp, rbp ; +0x95, 0x18013719d cmovnz rdi, rsi ; +0x98, 0x1801371a0 sub r13, rbp ; +0x9c, 0x1801371a4 add rbx, rbp ; +0x9f, 0x1801371a7 mov rbp, [rsp+78h+var_58] ; +0xa2, 0x1801371aa jmp short loc_18013714E ; +0xa7, 0x1801371af xor edi, edi ; +0xa9, 0x1801371b1 lea rbx, [rax-1] ; +0xab, 0x1801371b3 sub rbx, r15 ; +0xaf, 0x1801371b7 mov [r14], rdi ; +0xb2, 0x1801371ba mov rax, rbx ; +0xb5, 0x1801371bd jmp short loc_1801371FE ; +0xb8, 0x1801371c0 mov [r14], rdi ; +0xba, 0x1801371c2 or rax, 0FFFFFFFFFFFFFFFFh ; +0xbd, 0x1801371c5 jmp short loc_1801371FE ; +0xc1, 0x1801371c9 xor ebx, ebx ; +0xc3, 0x1801371cb movzx edx, word ptr [rsi]; char * ; +0xc5, 0x1801371cd lea rcx, [rsp+78h+var_50]; this ; +0xc8, 0x1801371d0 mov r8, rbp; char16_t ; +0xcd, 0x1801371d5 call ?__c16rtomb_utf8@__crt_mbstring@@YA_KPEAD_SPEAU_Mbstatet@@@Z ; +0xd0, 0x1801371d8 cmp rax, 0FFFFFFFFFFFFFFFFh ; +0xd5, 0x1801371dd jz short loc_1801371FE ; +0xd9, 0x1801371e1 test rax, rax ; +0xdb, 0x1801371e3 jz short loc_1801371EF ; +0xde, 0x1801371e6 cmp byte ptr [rsp+rax+78h+var_58+7], 0 ; +0xe0, 0x1801371e8 jz short loc_1801371F8 ; +0xe5, 0x1801371ed add rbx, rax ; +0xe7, 0x1801371ef add rsi, 2 ; +0xea, 0x1801371f2 jmp short loc_1801371CD ; +0xee, 0x1801371f6 dec rax ; +0xf0, 0x1801371f8 add rax, rbx ; +0xf3, 0x1801371fb mov rcx, [rsp+78h+var_48] ; +0xf6, 0x1801371fe xor rcx, rsp; StackCookie ; +0xfb, 0x180137203 call __security_check_cookie ; +0xfe, 0x180137206 mov rbx, [rsp+78h+arg_10] ; +0x103, 0x18013720b add rsp, 40h ; +0x10b, 0x180137213 pop r15 ; +0x10f, 0x180137217 pop r14 ; +0x111, 0x180137219 pop r13 ; +0x113, 0x18013721b pop r12 ; +0x115, 0x18013721d pop rdi ; +0x117, 0x18013721f pop rsi ; +0x118, 0x180137220 pop rbp ; +0x119, 0x180137221 retn ; +0x11a, 0x180137222