; ; __crt_mbstring::__mbsrtowcs_utf8 from 0x18013daac to 0x18013dc22 (374 bytes) ; ; 3 xrefs: ; > write_double_translated_ansi_nolock @ 0x18013fbb0 ; > write_double_translated_ansi_nolock @ 0x18013fc18 ; > @ 0x180203b18 ; ; 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_8], rbx ; +0x0, 0x18013daac mov [rsp+arg_10], rbp ; +0x5, 0x18013dab1 push rdi ; +0xa, 0x18013dab6 push r12 ; +0xb, 0x18013dab7 push r13 ; +0xd, 0x18013dab9 push r14 ; +0xf, 0x18013dabb push r15; struct _Mbstatet * ; +0x11, 0x18013dabd sub rsp, 20h ; +0x13, 0x18013dabf mov rdi, [rdx] ; +0x17, 0x18013dac3 xor r13d, r13d ; +0x1a, 0x18013dac6 mov r12, r9 ; +0x1d, 0x18013dac9 mov rbp, r8 ; +0x20, 0x18013dacc mov r14, rdx ; +0x23, 0x18013dacf mov r15, rcx ; +0x26, 0x18013dad2 test rcx, rcx ; +0x29, 0x18013dad5 jz loc_18013DBCC ; +0x2c, 0x18013dad8 mov rbx, rcx ; +0x32, 0x18013dade test r8, r8 ; +0x35, 0x18013dae1 jz loc_18013DB8B ; +0x38, 0x18013dae4 cmp [rdi], r13b ; +0x3e, 0x18013daea jnz short loc_18013DAF7 ; +0x41, 0x18013daed mov r8d, 1 ; +0x43, 0x18013daef jmp short loc_18013DB14 ; +0x49, 0x18013daf5 cmp [rdi+1], r13b ; +0x4b, 0x18013daf7 jnz short loc_18013DB05 ; +0x4f, 0x18013dafb mov r8d, 2 ; +0x51, 0x18013dafd jmp short loc_18013DB14 ; +0x57, 0x18013db03 mov al, [rdi+2] ; +0x59, 0x18013db05 neg al ; +0x5c, 0x18013db08 sbb r8, r8 ; +0x5e, 0x18013db0a neg r8 ; +0x61, 0x18013db0d add r8, 3; char * ; +0x64, 0x18013db10 mov r9, r12; unsigned __int64 ; +0x68, 0x18013db14 lea rcx, [rsp+48h+arg_0]; this ; +0x6b, 0x18013db17 mov rdx, rdi; char32_t * ; +0x70, 0x18013db1c call ?__mbrtoc32_utf8@__crt_mbstring@@YA_KPEA_UPEBD_KPEAU_Mbstatet@@@Z ; +0x73, 0x18013db1f mov rdx, rax ; +0x78, 0x18013db24 cmp rax, 0FFFFFFFFFFFFFFFFh ; +0x7b, 0x18013db27 jz short loc_18013DBA2 ; +0x7f, 0x18013db2b test rax, rax ; +0x81, 0x18013db2d jz short loc_18013DB99 ; +0x84, 0x18013db30 mov ecx, [rsp+48h+arg_0] ; +0x86, 0x18013db32 cmp ecx, 0FFFFh ; +0x8a, 0x18013db36 jbe short loc_18013DB77 ; +0x90, 0x18013db3c cmp rbp, 1 ; +0x92, 0x18013db3e jbe short loc_18013DB8B ; +0x96, 0x18013db42 add ecx, 0FFFF0000h ; +0x98, 0x18013db44 mov r8d, 0D800h ; +0x9e, 0x18013db4a mov eax, ecx ; +0xa4, 0x18013db50 mov [rsp+48h+arg_0], ecx ; +0xa6, 0x18013db52 shr eax, 0Ah ; +0xaa, 0x18013db56 dec rbp ; +0xad, 0x18013db59 or ax, r8w ; +0xb0, 0x18013db5c mov [rbx], ax ; +0xb4, 0x18013db60 mov eax, 3FFh ; +0xb7, 0x18013db63 and cx, ax ; +0xbc, 0x18013db68 add rbx, 2 ; +0xbf, 0x18013db6b mov eax, 0DC00h ; +0xc3, 0x18013db6f or cx, ax ; +0xc8, 0x18013db74 mov [rbx], cx ; +0xcb, 0x18013db77 add rdi, rdx ; +0xce, 0x18013db7a add rbx, 2 ; +0xd1, 0x18013db7d sub rbp, 1 ; +0xd5, 0x18013db81 jnz loc_18013DAEA ; +0xd9, 0x18013db85 sub rbx, r15 ; +0xdf, 0x18013db8b mov [r14], rdi ; +0xe2, 0x18013db8e sar rbx, 1 ; +0xe5, 0x18013db91 mov rax, rbx ; +0xe8, 0x18013db94 jmp short loc_18013DBB4 ; +0xeb, 0x18013db97 mov rdi, r13 ; +0xed, 0x18013db99 mov [rbx], r13w ; +0xf0, 0x18013db9c jmp short loc_18013DB8B ; +0xf4, 0x18013dba0 mov [r14], rdi ; +0xf6, 0x18013dba2 call _errno ; +0xf9, 0x18013dba5 mov dword ptr [rax], 2Ah ; '*' ; +0xfe, 0x18013dbaa or rax, 0FFFFFFFFFFFFFFFFh ; +0x104, 0x18013dbb0 mov rbx, [rsp+48h+arg_8] ; +0x108, 0x18013dbb4 mov rbp, [rsp+48h+arg_10] ; +0x10d, 0x18013dbb9 add rsp, 20h ; +0x112, 0x18013dbbe pop r15 ; +0x116, 0x18013dbc2 pop r14 ; +0x118, 0x18013dbc4 pop r13 ; +0x11a, 0x18013dbc6 pop r12 ; +0x11c, 0x18013dbc8 pop rdi ; +0x11e, 0x18013dbca retn ; +0x11f, 0x18013dbcb mov rbx, r13 ; +0x120, 0x18013dbcc cmp [rdi], r13b ; +0x123, 0x18013dbcf jnz short loc_18013DBDC ; +0x126, 0x18013dbd2 mov r8d, 1 ; +0x128, 0x18013dbd4 jmp short loc_18013DBF9 ; +0x12e, 0x18013dbda cmp [rdi+1], r13b ; +0x130, 0x18013dbdc jnz short loc_18013DBEA ; +0x134, 0x18013dbe0 mov r8d, 2 ; +0x136, 0x18013dbe2 jmp short loc_18013DBF9 ; +0x13c, 0x18013dbe8 mov al, [rdi+2] ; +0x13e, 0x18013dbea neg al ; +0x141, 0x18013dbed sbb r8, r8 ; +0x143, 0x18013dbef neg r8 ; +0x146, 0x18013dbf2 add r8, 3; char * ; +0x149, 0x18013dbf5 mov r9, r12; unsigned __int64 ; +0x14d, 0x18013dbf9 mov rdx, rdi; char32_t * ; +0x150, 0x18013dbfc xor ecx, ecx; this ; +0x153, 0x18013dbff call ?__mbrtoc32_utf8@__crt_mbstring@@YA_KPEA_UPEBD_KPEAU_Mbstatet@@@Z ; +0x155, 0x18013dc01 cmp rax, 0FFFFFFFFFFFFFFFFh ; +0x15a, 0x18013dc06 jz short loc_18013DBA5 ; +0x15e, 0x18013dc0a test rax, rax ; +0x160, 0x18013dc0c jz short loc_18013DB94 ; +0x163, 0x18013dc0f cmp rax, 4 ; +0x165, 0x18013dc11 jnz short loc_18013DC1A ; +0x169, 0x18013dc15 inc rbx ; +0x16b, 0x18013dc17 add rdi, rax ; +0x16e, 0x18013dc1a inc rbx ; +0x171, 0x18013dc1d jmp short loc_18013DBCF ; +0x174, 0x18013dc20