; ; _setmbcp_nolock from 0x18013a890 to 0x18013ab49 (697 bytes) ; ; 3 xrefs: ; > setmbcp_internal @ 0x18013a67a ; > @ 0x180203884 ; > @ 0x180203890 ; ; 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, 0x18013a890 push rbp ; +0x5, 0x18013a895 push rsi ; +0x6, 0x18013a896 push rdi ; +0x7, 0x18013a897 push r12 ; +0x8, 0x18013a898 push r13 ; +0xa, 0x18013a89a push r14 ; +0xc, 0x18013a89c push r15 ; +0xe, 0x18013a89e sub rsp, 40h ; +0x10, 0x18013a8a0 mov rax, cs:__security_cookie ; +0x14, 0x18013a8a4 xor rax, rsp ; +0x1b, 0x18013a8ab mov [rsp+78h+var_40], rax ; +0x1e, 0x18013a8ae mov rsi, rdx ; +0x23, 0x18013a8b3 call ?getSystemCP@@YAHH@Z ; +0x26, 0x18013a8b6 xor ebx, ebx ; +0x2b, 0x18013a8bb mov edi, eax ; +0x2d, 0x18013a8bd test eax, eax ; +0x2f, 0x18013a8bf jz loc_18013AB1A ; +0x31, 0x18013a8c1 lea r13, unk_1801B1EA0 ; +0x37, 0x18013a8c7 mov r14d, ebx ; +0x3e, 0x18013a8ce mov rax, r13 ; +0x41, 0x18013a8d1 lea ebp, [rbx+1] ; +0x44, 0x18013a8d4 cmp [rax], edi ; +0x47, 0x18013a8d7 jz loc_18013AA2D ; +0x49, 0x18013a8d9 add r14d, ebp ; +0x4f, 0x18013a8df add rax, 30h ; '0' ; +0x52, 0x18013a8e2 cmp r14d, 5 ; +0x56, 0x18013a8e6 jb short loc_18013A8D7 ; +0x5a, 0x18013a8ea cmp edi, 0FDE8h ; +0x5c, 0x18013a8ec jz loc_18013AA25 ; +0x62, 0x18013a8f2 movzx ecx, di; CodePage ; +0x68, 0x18013a8f8 call cs:IsValidCodePage ; +0x6b, 0x18013a8fb test eax, eax ; +0x71, 0x18013a901 jz loc_18013AA25 ; +0x73, 0x18013a903 mov eax, 0FDE9h ; +0x79, 0x18013a909 cmp edi, eax ; +0x7e, 0x18013a90e jnz short loc_18013A940 ; +0x80, 0x18013a910 mov [rsi+4], rax ; +0x82, 0x18013a912 mov [rsi+220h], rbx ; +0x86, 0x18013a916 mov [rsi+18h], ebx ; +0x8d, 0x18013a91d mov [rsi+1Ch], bx ; +0x90, 0x18013a920 lea rdi, [rsi+0Ch] ; +0x94, 0x18013a924 movzx eax, bx ; +0x98, 0x18013a928 mov ecx, 6 ; +0x9b, 0x18013a92b rep stosw ; +0xa0, 0x18013a930 mov rcx, rsi; struct __crt_multibyte_data * ; +0xa3, 0x18013a933 call ?setSBUpLow@@YAXPEAU__crt_multibyte_data@@@Z ; +0xa6, 0x18013a936 jmp loc_18013AB22 ; +0xab, 0x18013a93b lea rdx, [rsp+78h+CPInfo]; lpCPInfo ; +0xb0, 0x18013a940 mov ecx, edi; CodePage ; +0xb5, 0x18013a945 call cs:GetCPInfo ; +0xb7, 0x18013a947 test eax, eax ; +0xbd, 0x18013a94d jz loc_18013AA19 ; +0xbf, 0x18013a94f xor edx, edx; Val ; +0xc5, 0x18013a955 lea rcx, [rsi+18h]; void * ; +0xc7, 0x18013a957 mov r8d, 101h; Size ; +0xcb, 0x18013a95b call memset ; +0xd1, 0x18013a961 cmp [rsp+78h+CPInfo.MaxCharSize], 2 ; +0xd6, 0x18013a966 mov [rsi+4], edi ; +0xdb, 0x18013a96b mov [rsi+220h], rbx ; +0xde, 0x18013a96e jnz loc_18013AA0F ; +0xe5, 0x18013a975 lea rcx, [rsp+78h+CPInfo.LeadByte] ; +0xeb, 0x18013a97b cmp [rsp+78h+CPInfo.LeadByte], bl ; +0xf0, 0x18013a980 jz short loc_18013A9B2 ; +0xf4, 0x18013a984 cmp [rcx+1], bl ; +0xf6, 0x18013a986 jz short loc_18013A9B2 ; +0xf9, 0x18013a989 movzx eax, byte ptr [rcx+1] ; +0xfb, 0x18013a98b movzx edx, byte ptr [rcx] ; +0xff, 0x18013a98f cmp edx, eax ; +0x102, 0x18013a992 ja short loc_18013A9AA ; +0x104, 0x18013a994 sub eax, edx ; +0x106, 0x18013a996 lea edi, [rdx+1] ; +0x108, 0x18013a998 lea edx, [rax+rbp] ; +0x10b, 0x18013a99b or byte ptr [rdi+rsi+18h], 4 ; +0x10e, 0x18013a99e add edi, ebp ; +0x113, 0x18013a9a3 sub rdx, rbp ; +0x115, 0x18013a9a5 jnz short loc_18013A99E ; +0x118, 0x18013a9a8 add rcx, 2 ; +0x11a, 0x18013a9aa cmp [rcx], bl ; +0x11e, 0x18013a9ae jnz short loc_18013A986 ; +0x120, 0x18013a9b0 lea rax, [rsi+1Ah] ; +0x122, 0x18013a9b2 mov ecx, 0FEh ; +0x126, 0x18013a9b6 or byte ptr [rax], 8 ; +0x12b, 0x18013a9bb add rax, rbp ; +0x12e, 0x18013a9be sub rcx, rbp ; +0x131, 0x18013a9c1 jnz short loc_18013A9BB ; +0x134, 0x18013a9c4 mov ecx, [rsi+4] ; +0x136, 0x18013a9c6 sub ecx, 3A4h ; +0x139, 0x18013a9c9 jz short loc_18013A9FF ; +0x13f, 0x18013a9cf sub ecx, 4 ; +0x141, 0x18013a9d1 jz short loc_18013A9F6 ; +0x144, 0x18013a9d4 sub ecx, 0Dh ; +0x146, 0x18013a9d6 jz short loc_18013A9ED ; +0x149, 0x18013a9d9 cmp ecx, ebp ; +0x14b, 0x18013a9db jz short loc_18013A9E4 ; +0x14d, 0x18013a9dd mov rax, rbx ; +0x14f, 0x18013a9df jmp short loc_18013AA06 ; +0x152, 0x18013a9e2 mov rax, cs:off_1801772A0 ; +0x154, 0x18013a9e4 jmp short loc_18013AA06 ; +0x15b, 0x18013a9eb mov rax, cs:off_180177298 ; +0x15d, 0x18013a9ed jmp short loc_18013AA06 ; +0x164, 0x18013a9f4 mov rax, cs:off_180177290 ; +0x166, 0x18013a9f6 jmp short loc_18013AA06 ; +0x16d, 0x18013a9fd mov rax, cs:off_180177288 ; +0x16f, 0x18013a9ff mov [rsi+220h], rax ; +0x176, 0x18013aa06 jmp short loc_18013AA11 ; +0x17d, 0x18013aa0d mov ebp, ebx ; +0x17f, 0x18013aa0f mov [rsi+8], ebp ; +0x181, 0x18013aa11 jmp loc_18013A924 ; +0x184, 0x18013aa14 cmp cs:dword_1801F55D8, ebx ; +0x189, 0x18013aa19 jnz loc_18013AB1A ; +0x18f, 0x18013aa1f or eax, 0FFFFFFFFh ; +0x195, 0x18013aa25 jmp loc_18013AB24 ; +0x198, 0x18013aa28 xor edx, edx; Val ; +0x19d, 0x18013aa2d lea rcx, [rsi+18h]; void * ; +0x19f, 0x18013aa2f mov r8d, 101h; Size ; +0x1a3, 0x18013aa33 call memset ; +0x1a9, 0x18013aa39 mov eax, r14d ; +0x1ae, 0x18013aa3e lea r9, [r13+10h] ; +0x1b1, 0x18013aa41 lea r15, unk_1801B1E90 ; +0x1b5, 0x18013aa45 mov r14d, 4 ; +0x1bc, 0x18013aa4c lea r11, [rax+rax*2] ; +0x1c2, 0x18013aa52 shl r11, 4 ; +0x1c6, 0x18013aa56 add r9, r11 ; +0x1ca, 0x18013aa5a mov rdx, r9 ; +0x1cd, 0x18013aa5d cmp [r9], bl ; +0x1d0, 0x18013aa60 jz short loc_18013AAA3 ; +0x1d3, 0x18013aa63 cmp [rdx+1], bl ; +0x1d5, 0x18013aa65 jz short loc_18013AAA3 ; +0x1d8, 0x18013aa68 movzx r8d, byte ptr [rdx] ; +0x1da, 0x18013aa6a movzx eax, byte ptr [rdx+1] ; +0x1de, 0x18013aa6e cmp r8d, eax ; +0x1e2, 0x18013aa72 ja short loc_18013AA9B ; +0x1e5, 0x18013aa75 lea r10d, [r8+1] ; +0x1e7, 0x18013aa77 cmp r10d, 101h ; +0x1eb, 0x18013aa7b jnb short loc_18013AA9B ; +0x1f2, 0x18013aa82 mov al, [r15] ; +0x1f4, 0x18013aa84 add r8d, ebp ; +0x1f7, 0x18013aa87 or [r10+rsi+18h], al ; +0x1fa, 0x18013aa8a add r10d, ebp ; +0x1ff, 0x18013aa8f movzx eax, byte ptr [rdx+1] ; +0x202, 0x18013aa92 cmp r8d, eax ; +0x206, 0x18013aa96 jbe short loc_18013AA7B ; +0x209, 0x18013aa99 add rdx, 2 ; +0x20b, 0x18013aa9b cmp [rdx], bl ; +0x20f, 0x18013aa9f jnz short loc_18013AA65 ; +0x211, 0x18013aaa1 add r9, 8 ; +0x213, 0x18013aaa3 add r15, rbp ; +0x217, 0x18013aaa7 sub r14, rbp ; +0x21a, 0x18013aaaa jnz short loc_18013AA5D ; +0x21d, 0x18013aaad mov [rsi+4], edi ; +0x21f, 0x18013aaaf mov [rsi+8], ebp ; +0x222, 0x18013aab2 sub edi, 3A4h ; +0x225, 0x18013aab5 jz short loc_18013AAE6 ; +0x22b, 0x18013aabb sub edi, 4 ; +0x22d, 0x18013aabd jz short loc_18013AADD ; +0x230, 0x18013aac0 sub edi, 0Dh ; +0x232, 0x18013aac2 jz short loc_18013AAD4 ; +0x235, 0x18013aac5 cmp edi, ebp ; +0x237, 0x18013aac7 jnz short loc_18013AAED ; +0x239, 0x18013aac9 mov rbx, cs:off_1801772A0 ; +0x23b, 0x18013aacb jmp short loc_18013AAED ; +0x242, 0x18013aad2 mov rbx, cs:off_180177298 ; +0x244, 0x18013aad4 jmp short loc_18013AAED ; +0x24b, 0x18013aadb mov rbx, cs:off_180177290 ; +0x24d, 0x18013aadd jmp short loc_18013AAED ; +0x254, 0x18013aae4 mov rbx, cs:off_180177288 ; +0x256, 0x18013aae6 sub r11, rsi ; +0x25d, 0x18013aaed mov [rsi+220h], rbx ; +0x260, 0x18013aaf0 lea rdx, [rsi+0Ch] ; +0x267, 0x18013aaf7 mov ecx, 6 ; +0x26b, 0x18013aafb lea rdi, [r11+r13] ; +0x270, 0x18013ab00 movzx eax, word ptr [rdi+rdx-8] ; +0x274, 0x18013ab04 mov [rdx], ax ; +0x279, 0x18013ab09 lea rdx, [rdx+2] ; +0x27c, 0x18013ab0c sub rcx, rbp ; +0x280, 0x18013ab10 jnz short loc_18013AB04 ; +0x283, 0x18013ab13 jmp loc_18013A933 ; +0x285, 0x18013ab15 mov rcx, rsi; struct threadmbcinfostruct * ; +0x28a, 0x18013ab1a call ?setSBCS@@YAXPEAUthreadmbcinfostruct@@@Z ; +0x28d, 0x18013ab1d xor eax, eax ; +0x292, 0x18013ab22 mov rcx, [rsp+78h+var_40] ; +0x294, 0x18013ab24 xor rcx, rsp; StackCookie ; +0x299, 0x18013ab29 call __security_check_cookie ; +0x29c, 0x18013ab2c mov rbx, [rsp+78h+arg_10] ; +0x2a1, 0x18013ab31 add rsp, 40h ; +0x2a9, 0x18013ab39 pop r15 ; +0x2ad, 0x18013ab3d pop r14 ; +0x2af, 0x18013ab3f pop r13 ; +0x2b1, 0x18013ab41 pop r12 ; +0x2b3, 0x18013ab43 pop rdi ; +0x2b5, 0x18013ab45 pop rsi ; +0x2b6, 0x18013ab46 pop rbp ; +0x2b7, 0x18013ab47 retn ; +0x2b8, 0x18013ab48