; ; _wsetlocale_set_cat from 0x180139dd4 to 0x18013a0e2 (782 bytes) ; ; 2 xrefs: ; > common_expand_argv_wildcards @ 0x180139ac8 ; > @ 0x180203824 ; ; 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-8+arg_18], rbx ; +0x0, 0x180139dd4 push rbp ; +0x5, 0x180139dd9 push rsi ; +0x6, 0x180139dda push rdi ; +0x7, 0x180139ddb push r12 ; +0x8, 0x180139ddc push r13 ; +0xa, 0x180139dde push r14 ; +0xc, 0x180139de0 push r15 ; +0xe, 0x180139de2 lea rbp, [rsp-230h] ; +0x10, 0x180139de4 sub rsp, 330h ; +0x18, 0x180139dec mov rax, cs:__security_cookie ; +0x1f, 0x180139df3 xor rax, rsp ; +0x26, 0x180139dfa mov [rbp+260h+var_40], rax ; +0x29, 0x180139dfd mov r12, r8 ; +0x30, 0x180139e04 mov rsi, rcx ; +0x33, 0x180139e07 mov rbx, 200000000801h ; +0x36, 0x180139e0a cmp rdx, rcx ; +0x40, 0x180139e14 jz short loc_180139E3B ; +0x43, 0x180139e17 mov al, [rdx] ; +0x45, 0x180139e19 sub al, 2Fh ; '/' ; +0x47, 0x180139e1b cmp al, 2Dh ; '-' ; +0x49, 0x180139e1d ja short loc_180139E2B ; +0x4b, 0x180139e1f movsx rax, al ; +0x4d, 0x180139e21 bt rbx, rax ; +0x51, 0x180139e25 jb short loc_180139E3B ; +0x55, 0x180139e29 mov rcx, rsi; Start ; +0x57, 0x180139e2b call _mbsdec ; +0x5a, 0x180139e2e mov rdx, rax ; +0x5f, 0x180139e33 cmp rax, rsi ; +0x62, 0x180139e36 jnz short loc_180139E19 ; +0x65, 0x180139e39 mov r8b, [rdx] ; +0x67, 0x180139e3b cmp r8b, 3Ah ; ':' ; +0x6a, 0x180139e3e jnz short loc_180139E62 ; +0x6e, 0x180139e42 lea rax, [rsi+1] ; +0x70, 0x180139e44 cmp rdx, rax ; +0x74, 0x180139e48 jz short loc_180139E62 ; +0x77, 0x180139e4b mov r9, r12 ; +0x79, 0x180139e4d xor r8d, r8d; MaxCount ; +0x7c, 0x180139e50 xor edx, edx; char * ; +0x7f, 0x180139e53 mov rcx, rsi; Source ; +0x81, 0x180139e55 call ??$copy_and_add_argument_to_buffer@D@@YAHQEBD0_KAEAV?$argument_list@D@?A0x5f5c8891@@@Z ; +0x84, 0x180139e58 jmp loc_18013A0B8 ; +0x89, 0x180139e5d sub r8b, 2Fh ; '/' ; +0x8e, 0x180139e62 xor edi, edi ; +0x92, 0x180139e66 cmp r8b, 2Dh ; '-' ; +0x94, 0x180139e68 ja short loc_180139E7A ; +0x98, 0x180139e6c movsx rax, r8b ; +0x9a, 0x180139e6e bt rbx, rax ; +0x9e, 0x180139e72 mov al, 1 ; +0xa2, 0x180139e76 jb short loc_180139E7D ; +0xa4, 0x180139e78 mov al, dil ; +0xa6, 0x180139e7a sub rdx, rsi ; +0xa9, 0x180139e7d mov [rbp+260h+var_2C0], rdi ; +0xac, 0x180139e80 inc rdx ; +0xb0, 0x180139e84 mov [rbp+260h+var_2B8], rdi ; +0xb3, 0x180139e87 neg al ; +0xb7, 0x180139e8b mov [rbp+260h+var_2B0], rdi ; +0xb9, 0x180139e8d lea rcx, [rsp+360h+var_330]; this ; +0xbd, 0x180139e91 mov [rbp+260h+var_2A8], rdi ; +0xc2, 0x180139e96 sbb r13, r13 ; +0xc6, 0x180139e9a mov [rbp+260h+var_2A0], rdi ; +0xc9, 0x180139e9d and r13, rdx ; +0xcd, 0x180139ea1 mov [rbp+260h+var_298], dil ; +0xd0, 0x180139ea4 xor edx, edx; struct __crt_locale_pointers * ; +0xd4, 0x180139ea8 call ??0_LocaleUpdate@@QEAA@QEAU__crt_locale_pointers@@@Z ; +0xd6, 0x180139eaa mov rax, [rsp+360h+var_328] ; +0xdb, 0x180139eaf mov r15d, 0FDE9h ; +0xe0, 0x180139eb4 cmp [rax+0Ch], r15d ; +0xe6, 0x180139eba jnz short loc_180139ED8 ; +0xea, 0x180139ebe cmp [rsp+360h+var_318], dil ; +0xec, 0x180139ec0 jz short loc_180139ED3 ; +0xf1, 0x180139ec5 mov rax, [rsp+360h+var_330] ; +0xf3, 0x180139ec7 and dword ptr [rax+3A8h], 0FFFFFFFDh ; +0xf8, 0x180139ecc mov r8d, r15d ; +0xff, 0x180139ed3 jmp short loc_180139F12 ; +0x102, 0x180139ed6 call __acrt_AreFileApisANSI ; +0x104, 0x180139ed8 test eax, eax ; +0x109, 0x180139edd jnz short loc_180139EFC ; +0x10b, 0x180139edf cmp [rsp+360h+var_318], dil ; +0x10d, 0x180139ee1 jz short loc_180139EF4 ; +0x112, 0x180139ee6 mov rax, [rsp+360h+var_330] ; +0x114, 0x180139ee8 and dword ptr [rax+3A8h], 0FFFFFFFDh ; +0x119, 0x180139eed mov r8d, 1 ; +0x120, 0x180139ef4 jmp short loc_180139F12 ; +0x126, 0x180139efa cmp [rsp+360h+var_318], dil ; +0x128, 0x180139efc jz short loc_180139F0F ; +0x12d, 0x180139f01 mov rax, [rsp+360h+var_330] ; +0x12f, 0x180139f03 and dword ptr [rax+3A8h], 0FFFFFFFDh ; +0x134, 0x180139f08 mov r8d, edi ; +0x13b, 0x180139f0f lea rdx, [rbp+260h+var_2C0] ; +0x13e, 0x180139f12 mov rcx, rsi ; +0x142, 0x180139f16 call ??$__acrt_mbs_to_wcs_cp@U__crt_win32_buffer_internal_dynamic_resizing@@@@YAHQEBDAEAV?$__crt_win32_buffer@_WU__crt_win32_buffer_internal_dynamic_resizing@@@@I@Z ; +0x145, 0x180139f19 mov rcx, [rbp+260h+var_2B0] ; +0x14a, 0x180139f1e lea r8, [rbp+260h+FindFileData]; lpFindFileData ; +0x14e, 0x180139f22 test eax, eax ; +0x152, 0x180139f26 mov [rsp+360h+dwAdditionalFlags], edi; dwAdditionalFlags ; +0x154, 0x180139f28 mov [rsp+360h+lpSearchFilter], rdi; lpSearchFilter ; +0x158, 0x180139f2c cmovnz rcx, rdi; lpFileName ; +0x15d, 0x180139f31 xor r9d, r9d; fSearchOp ; +0x161, 0x180139f35 xor edx, edx; fInfoLevelId ; +0x164, 0x180139f38 call cs:FindFirstFileExW ; +0x166, 0x180139f3a mov rbx, rax ; +0x16c, 0x180139f40 cmp rax, 0FFFFFFFFFFFFFFFFh ; +0x16f, 0x180139f43 jnz short loc_180139F60 ; +0x173, 0x180139f47 mov r9, r12 ; +0x175, 0x180139f49 xor r8d, r8d; MaxCount ; +0x178, 0x180139f4c xor edx, edx; char * ; +0x17b, 0x180139f4f mov rcx, rsi; Source ; +0x17d, 0x180139f51 call ??$copy_and_add_argument_to_buffer@D@@YAHQEBD0_KAEAV?$argument_list@D@?A0x5f5c8891@@@Z ; +0x180, 0x180139f54 mov edi, eax ; +0x185, 0x180139f59 jmp loc_18013A0A7 ; +0x187, 0x180139f5b mov r14, [r12+8] ; +0x18c, 0x180139f60 sub r14, [r12] ; +0x191, 0x180139f65 sar r14, 3 ; +0x195, 0x180139f69 xor edx, edx; struct __crt_locale_pointers * ; +0x199, 0x180139f6d mov [rsp+360h+var_2F0], rdi ; +0x19b, 0x180139f6f lea rcx, [rsp+360h+var_310]; this ; +0x1a0, 0x180139f74 mov [rsp+360h+var_2E8], rdi ; +0x1a5, 0x180139f79 mov [rbp+260h+Block], rdi ; +0x1aa, 0x180139f7e mov [rbp+260h+var_2D8], rdi ; +0x1ae, 0x180139f82 mov [rbp+260h+var_2D0], rdi ; +0x1b2, 0x180139f86 mov [rbp+260h+var_2C8], dil ; +0x1b6, 0x180139f8a call ??0_LocaleUpdate@@QEAA@QEAU__crt_locale_pointers@@@Z ; +0x1ba, 0x180139f8e mov rax, [rsp+360h+var_308] ; +0x1bf, 0x180139f93 cmp [rax+0Ch], r15d ; +0x1c4, 0x180139f98 jnz short loc_180139FB6 ; +0x1c8, 0x180139f9c cmp [rsp+360h+var_2F8], dil ; +0x1ca, 0x180139f9e jz short loc_180139FB1 ; +0x1cf, 0x180139fa3 mov rax, [rsp+360h+var_310] ; +0x1d1, 0x180139fa5 and dword ptr [rax+3A8h], 0FFFFFFFDh ; +0x1d6, 0x180139faa mov r8d, r15d ; +0x1dd, 0x180139fb1 jmp short loc_180139FF0 ; +0x1e0, 0x180139fb4 call __acrt_AreFileApisANSI ; +0x1e2, 0x180139fb6 test eax, eax ; +0x1e7, 0x180139fbb jnz short loc_180139FDA ; +0x1e9, 0x180139fbd cmp [rsp+360h+var_2F8], dil ; +0x1eb, 0x180139fbf jz short loc_180139FD2 ; +0x1f0, 0x180139fc4 mov rax, [rsp+360h+var_310] ; +0x1f2, 0x180139fc6 and dword ptr [rax+3A8h], 0FFFFFFFDh ; +0x1f7, 0x180139fcb mov r8d, 1 ; +0x1fe, 0x180139fd2 jmp short loc_180139FF0 ; +0x204, 0x180139fd8 cmp [rsp+360h+var_2F8], dil ; +0x206, 0x180139fda jz short loc_180139FED ; +0x20b, 0x180139fdf mov rax, [rsp+360h+var_310] ; +0x20d, 0x180139fe1 and dword ptr [rax+3A8h], 0FFFFFFFDh ; +0x212, 0x180139fe6 mov r8d, edi ; +0x219, 0x180139fed lea rdx, [rsp+360h+var_2F0] ; +0x21c, 0x180139ff0 lea rcx, [rbp+260h+var_264] ; +0x221, 0x180139ff5 call ??$__acrt_wcs_to_mbs_cp@U__crt_win32_buffer_internal_dynamic_resizing@@@@YAHQEB_WAEAV?$__crt_win32_buffer@DU__crt_win32_buffer_internal_dynamic_resizing@@@@I@Z ; +0x225, 0x180139ff9 mov r15, [rbp+260h+Block] ; +0x22a, 0x180139ffe test eax, eax ; +0x22e, 0x18013a002 mov rcx, r15 ; +0x230, 0x18013a004 cmovnz rcx, rdi; Source ; +0x233, 0x18013a007 cmp byte ptr [rcx], 2Eh ; '.' ; +0x237, 0x18013a00b jnz short loc_18013A021 ; +0x23a, 0x18013a00e mov al, [rcx+1] ; +0x23c, 0x18013a010 test al, al ; +0x23f, 0x18013a013 jz short loc_18013A037 ; +0x241, 0x18013a015 cmp al, 2Eh ; '.' ; +0x243, 0x18013a017 jnz short loc_18013A021 ; +0x245, 0x18013a019 cmp [rcx+2], dil ; +0x247, 0x18013a01b jz short loc_18013A037 ; +0x24b, 0x18013a01f mov r9, r12 ; +0x24d, 0x18013a021 mov r8, r13; MaxCount ; +0x250, 0x18013a024 mov rdx, rsi; char * ; +0x253, 0x18013a027 call ??$copy_and_add_argument_to_buffer@D@@YAHQEBD0_KAEAV?$argument_list@D@?A0x5f5c8891@@@Z ; +0x256, 0x18013a02a mov edi, eax ; +0x25b, 0x18013a02f test eax, eax ; +0x25d, 0x18013a031 jnz short loc_18013A090 ; +0x25f, 0x18013a033 xor edi, edi ; +0x261, 0x18013a035 cmp [rbp+260h+var_2C8], dil ; +0x263, 0x18013a037 jz short loc_18013A045 ; +0x267, 0x18013a03b mov rcx, r15; Block ; +0x269, 0x18013a03d call _free_base ; +0x26c, 0x18013a040 lea rdx, [rbp+260h+FindFileData]; lpFindFileData ; +0x271, 0x18013a045 mov rcx, rbx; hFindFile ; +0x275, 0x18013a049 call cs:FindNextFileW ; +0x278, 0x18013a04c mov r15d, 0FDE9h ; +0x27e, 0x18013a052 test eax, eax ; +0x284, 0x18013a058 jnz loc_180139F6D ; +0x286, 0x18013a05a mov rax, [r12] ; +0x28c, 0x18013a060 mov rdx, [r12+8] ; +0x290, 0x18013a064 sub rdx, rax ; +0x295, 0x18013a069 sar rdx, 3 ; +0x298, 0x18013a06c cmp r14, rdx ; +0x29c, 0x18013a070 jz short loc_18013A09E ; +0x29f, 0x18013a073 sub rdx, r14; NumOfElements ; +0x2a1, 0x18013a075 lea rcx, [rax+r14*8]; Base ; +0x2a4, 0x18013a078 lea r9, unknown_libname_71; CompareFunction ; +0x2a8, 0x18013a07c mov r8d, 8; SizeOfElements ; +0x2af, 0x18013a083 call qsort ; +0x2b5, 0x18013a089 jmp short loc_18013A09E ; +0x2ba, 0x18013a08e cmp [rbp+260h+var_2C8], 0 ; +0x2bc, 0x18013a090 jz short loc_18013A09E ; +0x2c0, 0x18013a094 mov rcx, r15; Block ; +0x2c2, 0x18013a096 call _free_base ; +0x2c5, 0x18013a099 mov rcx, rbx; hFindFile ; +0x2ca, 0x18013a09e call cs:FindClose ; +0x2cd, 0x18013a0a1 cmp [rbp+260h+var_298], 0 ; +0x2d3, 0x18013a0a7 jz short loc_18013A0B6 ; +0x2d7, 0x18013a0ab mov rcx, [rbp+260h+var_2B0]; Block ; +0x2d9, 0x18013a0ad call _free_base ; +0x2dd, 0x18013a0b1 mov eax, edi ; +0x2e2, 0x18013a0b6 mov rcx, [rbp+260h+var_40] ; +0x2e4, 0x18013a0b8 xor rcx, rsp; StackCookie ; +0x2eb, 0x18013a0bf call __security_check_cookie ; +0x2ee, 0x18013a0c2 mov rbx, [rsp+360h+arg_18] ; +0x2f3, 0x18013a0c7 add rsp, 330h ; +0x2fb, 0x18013a0cf pop r15 ; +0x302, 0x18013a0d6 pop r14 ; +0x304, 0x18013a0d8 pop r13 ; +0x306, 0x18013a0da pop r12 ; +0x308, 0x18013a0dc pop rdi ; +0x30a, 0x18013a0de pop rsi ; +0x30b, 0x18013a0df pop rbp ; +0x30c, 0x18013a0e0 retn ; +0x30d, 0x18013a0e1