; ; InternalCompareStringA from 0x18013bad8 to 0x18013be35 (861 bytes) ; ; 2 xrefs: ; > __acrt_CompareStringA @ 0x18013be99 ; > @ 0x180203974 ; ; 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, 0x18013bad8 push rbx ; +0x2, 0x18013bada push rsi ; +0x3, 0x18013badb push rdi ; +0x4, 0x18013badc push r12 ; +0x5, 0x18013badd push r13 ; +0x7, 0x18013badf push r14 ; +0x9, 0x18013bae1 push r15 ; +0xb, 0x18013bae3 sub rsp, 88h ; +0xd, 0x18013bae5 lea rbp, [rsp+50h] ; +0x14, 0x18013baec mov rax, cs:__security_cookie ; +0x19, 0x18013baf1 xor rax, rbp ; +0x20, 0x18013baf8 mov [rbp+70h+var_48], rax ; +0x23, 0x18013bafb movsxd rbx, [rbp+70h+arg_20] ; +0x27, 0x18013baff xor r12d, r12d ; +0x2e, 0x18013bb06 mov r13, [rbp+70h+String] ; +0x31, 0x18013bb09 mov r15, r9 ; +0x38, 0x18013bb10 mov [rbp+70h+var_70], r8d ; +0x3b, 0x18013bb13 mov rdi, rcx ; +0x3f, 0x18013bb17 mov [rbp+70h+var_68], rdx ; +0x42, 0x18013bb1a test ebx, ebx ; +0x46, 0x18013bb1e jle short loc_18013BB32 ; +0x48, 0x18013bb20 mov rdx, rbx; Count ; +0x4a, 0x18013bb22 mov rcx, r9; String ; +0x4d, 0x18013bb25 call __strncnt ; +0x50, 0x18013bb28 mov rbx, rax ; +0x55, 0x18013bb2d jmp short loc_18013BB3B ; +0x58, 0x18013bb30 cmp ebx, 0FFFFFFFFh ; +0x5a, 0x18013bb32 jl loc_18013BE16 ; +0x5d, 0x18013bb35 movsxd rsi, [rbp+70h+arg_30] ; +0x63, 0x18013bb3b test esi, esi ; +0x6a, 0x18013bb42 jle short loc_18013BB56 ; +0x6c, 0x18013bb44 mov rdx, rsi; Count ; +0x6e, 0x18013bb46 mov rcx, r13; String ; +0x71, 0x18013bb49 call __strncnt ; +0x74, 0x18013bb4c mov rsi, rax ; +0x79, 0x18013bb51 jmp short loc_18013BB5F ; +0x7c, 0x18013bb54 cmp esi, 0FFFFFFFFh ; +0x7e, 0x18013bb56 jl loc_18013BE16 ; +0x81, 0x18013bb59 mov r14d, [rbp+70h+CodePage] ; +0x87, 0x18013bb5f test r14d, r14d ; +0x8e, 0x18013bb66 jnz short loc_18013BB72 ; +0x91, 0x18013bb69 mov rax, [rdi] ; +0x93, 0x18013bb6b mov r14d, [rax+0Ch] ; +0x96, 0x18013bb6e test ebx, ebx ; +0x9a, 0x18013bb72 jz short loc_18013BB7E ; +0x9c, 0x18013bb74 test esi, esi ; +0x9e, 0x18013bb76 jnz loc_18013BC24 ; +0xa0, 0x18013bb78 cmp ebx, esi ; +0xa6, 0x18013bb7e jz loc_18013BE0F ; +0xa8, 0x18013bb80 cmp esi, 1 ; +0xae, 0x18013bb86 jg loc_18013BC1A ; +0xb1, 0x18013bb89 cmp ebx, 1 ; +0xb7, 0x18013bb8f jg short loc_18013BBDC ; +0xba, 0x18013bb92 lea rdx, [rbp+70h+CPInfo]; lpCPInfo ; +0xbc, 0x18013bb94 mov ecx, r14d; CodePage ; +0xc0, 0x18013bb98 call cs:GetCPInfo ; +0xc3, 0x18013bb9b test eax, eax ; +0xc9, 0x18013bba1 jz loc_18013BE16 ; +0xcb, 0x18013bba3 test ebx, ebx ; +0xd1, 0x18013bba9 jle short loc_18013BBE6 ; +0xd3, 0x18013bbab cmp [rbp+70h+CPInfo.MaxCharSize], 2 ; +0xd5, 0x18013bbad jb short loc_18013BBDC ; +0xd9, 0x18013bbb1 lea rax, [rbp+70h+CPInfo.LeadByte] ; +0xdb, 0x18013bbb3 cmp [rbp+70h+CPInfo.LeadByte], r12b ; +0xdf, 0x18013bbb7 jz short loc_18013BBDC ; +0xe3, 0x18013bbbb cmp [rax+1], r12b ; +0xe5, 0x18013bbbd jz short loc_18013BBDC ; +0xe9, 0x18013bbc1 mov cl, [r15] ; +0xeb, 0x18013bbc3 cmp cl, [rax] ; +0xee, 0x18013bbc6 jb short loc_18013BBD3 ; +0xf0, 0x18013bbc8 cmp cl, [rax+1] ; +0xf2, 0x18013bbca jbe loc_18013BE0F ; +0xf5, 0x18013bbcd add rax, 2 ; +0xfb, 0x18013bbd3 cmp [rax], r12b ; +0xff, 0x18013bbd7 jnz short loc_18013BBBD ; +0x102, 0x18013bbda mov eax, 3 ; +0x104, 0x18013bbdc jmp loc_18013BE18 ; +0x109, 0x18013bbe1 test esi, esi ; +0x10e, 0x18013bbe6 jle short loc_18013BC24 ; +0x110, 0x18013bbe8 cmp [rbp+70h+CPInfo.MaxCharSize], 2 ; +0x112, 0x18013bbea jb short loc_18013BC1A ; +0x116, 0x18013bbee lea rax, [rbp+70h+CPInfo.LeadByte] ; +0x118, 0x18013bbf0 cmp [rbp+70h+CPInfo.LeadByte], r12b ; +0x11c, 0x18013bbf4 jz short loc_18013BC1A ; +0x120, 0x18013bbf8 cmp [rax+1], r12b ; +0x122, 0x18013bbfa jz short loc_18013BC1A ; +0x126, 0x18013bbfe mov cl, [r13+0] ; +0x128, 0x18013bc00 cmp cl, [rax] ; +0x12c, 0x18013bc04 jb short loc_18013BC11 ; +0x12e, 0x18013bc06 cmp cl, [rax+1] ; +0x130, 0x18013bc08 jbe loc_18013BE0F ; +0x133, 0x18013bc0b add rax, 2 ; +0x139, 0x18013bc11 cmp [rax], r12b ; +0x13d, 0x18013bc15 jnz short loc_18013BBFA ; +0x140, 0x18013bc18 mov eax, 1 ; +0x142, 0x18013bc1a jmp loc_18013BE18 ; +0x147, 0x18013bc1f mov [rsp+0C0h+var_98], r12d ; +0x14c, 0x18013bc24 mov r9d, ebx ; +0x151, 0x18013bc29 mov r8, r15 ; +0x154, 0x18013bc2c mov [rsp+0C0h+var_A0], r12 ; +0x157, 0x18013bc2f mov edx, 9 ; +0x15c, 0x18013bc34 mov ecx, r14d ; +0x161, 0x18013bc39 call __acrt_MultiByteToWideChar ; +0x164, 0x18013bc3c movsxd r12, eax ; +0x169, 0x18013bc41 test eax, eax ; +0x16c, 0x18013bc44 jz loc_18013BE16 ; +0x16e, 0x18013bc46 mov rcx, r12 ; +0x174, 0x18013bc4c mov r8, 0FFFFFFFFFFFFFF0h ; +0x177, 0x18013bc4f add rcx, rcx ; +0x181, 0x18013bc59 lea rdx, [rcx+10h] ; +0x184, 0x18013bc5c cmp rcx, rdx ; +0x188, 0x18013bc60 sbb rcx, rcx ; +0x18b, 0x18013bc63 and rcx, rdx; Size ; +0x18e, 0x18013bc66 jz short loc_18013BCBB ; +0x191, 0x18013bc69 cmp rcx, 400h ; +0x193, 0x18013bc6b ja short loc_18013BCA2 ; +0x19a, 0x18013bc72 lea rax, [rcx+0Fh] ; +0x19c, 0x18013bc74 cmp rax, rcx ; +0x1a0, 0x18013bc78 ja short loc_18013BC80 ; +0x1a3, 0x18013bc7b mov rax, r8 ; +0x1a5, 0x18013bc7d and rax, 0FFFFFFFFFFFFFFF0h ; +0x1a8, 0x18013bc80 call __alloca_probe ; +0x1ac, 0x18013bc84 sub rsp, rax ; +0x1b1, 0x18013bc89 lea rdi, [rsp+0C0h+var_70] ; +0x1b4, 0x18013bc8c test rdi, rdi ; +0x1b9, 0x18013bc91 jz loc_18013BDF3 ; +0x1bc, 0x18013bc94 mov dword ptr [rdi], 0CCCCh ; +0x1c2, 0x18013bc9a jmp short loc_18013BCB5 ; +0x1c8, 0x18013bca0 call _malloc_base ; +0x1ca, 0x18013bca2 mov rdi, rax ; +0x1cf, 0x18013bca7 test rax, rax ; +0x1d2, 0x18013bcaa jz short loc_18013BCBD ; +0x1d5, 0x18013bcad mov dword ptr [rax], 0DDDDh ; +0x1d7, 0x18013bcaf add rdi, 10h ; +0x1dd, 0x18013bcb5 jmp short loc_18013BCBD ; +0x1e1, 0x18013bcb9 xor edi, edi ; +0x1e3, 0x18013bcbb test rdi, rdi ; +0x1e5, 0x18013bcbd jz loc_18013BDF3 ; +0x1e8, 0x18013bcc0 mov [rsp+0C0h+var_98], r12d ; +0x1ee, 0x18013bcc6 mov r9d, ebx ; +0x1f3, 0x18013bccb mov r8, r15 ; +0x1f6, 0x18013bcce mov [rsp+0C0h+var_A0], rdi ; +0x1f9, 0x18013bcd1 mov edx, 1 ; +0x1fe, 0x18013bcd6 mov ecx, r14d ; +0x203, 0x18013bcdb call __acrt_MultiByteToWideChar ; +0x206, 0x18013bcde test eax, eax ; +0x20b, 0x18013bce3 jz loc_18013BDF3 ; +0x20d, 0x18013bce5 and [rsp+0C0h+var_98], 0 ; +0x213, 0x18013bceb mov r9d, esi ; +0x218, 0x18013bcf0 and [rsp+0C0h+var_A0], 0 ; +0x21b, 0x18013bcf3 mov r8, r13 ; +0x221, 0x18013bcf9 mov edx, 9 ; +0x224, 0x18013bcfc mov ecx, r14d ; +0x229, 0x18013bd01 call __acrt_MultiByteToWideChar ; +0x22c, 0x18013bd04 movsxd r15, eax ; +0x231, 0x18013bd09 test eax, eax ; +0x234, 0x18013bd0c jz loc_18013BDF3 ; +0x236, 0x18013bd0e mov rdx, r15 ; +0x23c, 0x18013bd14 add rdx, rdx ; +0x23f, 0x18013bd17 lea rcx, [rdx+10h] ; +0x242, 0x18013bd1a cmp rdx, rcx ; +0x246, 0x18013bd1e sbb rdx, rdx ; +0x249, 0x18013bd21 and rdx, rcx ; +0x24c, 0x18013bd24 jz short loc_18013BD7F ; +0x24f, 0x18013bd27 cmp rdx, 400h ; +0x251, 0x18013bd29 ja short loc_18013BD63 ; +0x258, 0x18013bd30 lea rax, [rdx+0Fh] ; +0x25a, 0x18013bd32 cmp rax, rdx ; +0x25e, 0x18013bd36 ja short loc_18013BD45 ; +0x261, 0x18013bd39 mov rax, 0FFFFFFFFFFFFFF0h ; +0x263, 0x18013bd3b and rax, 0FFFFFFFFFFFFFFF0h ; +0x26d, 0x18013bd45 call __alloca_probe ; +0x271, 0x18013bd49 sub rsp, rax ; +0x276, 0x18013bd4e lea rbx, [rsp+0C0h+var_70] ; +0x279, 0x18013bd51 test rbx, rbx ; +0x27e, 0x18013bd56 jz short loc_18013BDD9 ; +0x281, 0x18013bd59 mov dword ptr [rbx], 0CCCCh ; +0x283, 0x18013bd5b jmp short loc_18013BD79 ; +0x289, 0x18013bd61 mov rcx, rdx; Size ; +0x28b, 0x18013bd63 call _malloc_base ; +0x28e, 0x18013bd66 mov rbx, rax ; +0x293, 0x18013bd6b test rax, rax ; +0x296, 0x18013bd6e jz short loc_18013BD81 ; +0x299, 0x18013bd71 mov dword ptr [rax], 0DDDDh ; +0x29b, 0x18013bd73 add rbx, 10h ; +0x2a1, 0x18013bd79 jmp short loc_18013BD81 ; +0x2a5, 0x18013bd7d xor ebx, ebx ; +0x2a7, 0x18013bd7f test rbx, rbx ; +0x2a9, 0x18013bd81 jz short loc_18013BDD9 ; +0x2ac, 0x18013bd84 mov [rsp+0C0h+var_98], r15d ; +0x2ae, 0x18013bd86 mov r9d, esi ; +0x2b3, 0x18013bd8b mov r8, r13 ; +0x2b6, 0x18013bd8e mov [rsp+0C0h+var_A0], rbx ; +0x2b9, 0x18013bd91 mov edx, 1 ; +0x2be, 0x18013bd96 mov ecx, r14d ; +0x2c3, 0x18013bd9b call __acrt_MultiByteToWideChar ; +0x2c6, 0x18013bd9e test eax, eax ; +0x2cb, 0x18013bda3 jz short loc_18013BDD9 ; +0x2cd, 0x18013bda5 and [rsp+0C0h+var_80], 0 ; +0x2cf, 0x18013bda7 mov r9d, r12d ; +0x2d5, 0x18013bdad and [rsp+0C0h+var_88], 0 ; +0x2d8, 0x18013bdb0 mov r8, rdi ; +0x2de, 0x18013bdb6 and [rsp+0C0h+var_90], 0 ; +0x2e1, 0x18013bdb9 mov edx, [rbp+70h+var_70] ; +0x2e7, 0x18013bdbf mov rcx, [rbp+70h+var_68] ; +0x2ea, 0x18013bdc2 mov [rsp+0C0h+var_98], r15d ; +0x2ee, 0x18013bdc6 mov [rsp+0C0h+var_A0], rbx ; +0x2f3, 0x18013bdcb call __acrt_CompareStringEx ; +0x2f8, 0x18013bdd0 mov esi, eax ; +0x2fd, 0x18013bdd5 jmp short loc_18013BDDB ; +0x2ff, 0x18013bdd7 xor esi, esi ; +0x301, 0x18013bdd9 test rbx, rbx ; +0x303, 0x18013bddb jz short loc_18013BDF5 ; +0x306, 0x18013bdde lea rcx, [rbx-10h]; Block ; +0x308, 0x18013bde0 cmp dword ptr [rcx], 0DDDDh ; +0x30c, 0x18013bde4 jnz short loc_18013BDF5 ; +0x312, 0x18013bdea call _free_base ; +0x314, 0x18013bdec jmp short loc_18013BDF5 ; +0x319, 0x18013bdf1 xor esi, esi ; +0x31b, 0x18013bdf3 test rdi, rdi ; +0x31d, 0x18013bdf5 jz short loc_18013BE0B ; +0x320, 0x18013bdf8 lea rcx, [rdi-10h]; Block ; +0x322, 0x18013bdfa cmp dword ptr [rcx], 0DDDDh ; +0x326, 0x18013bdfe jnz short loc_18013BE0B ; +0x32c, 0x18013be04 call _free_base ; +0x32e, 0x18013be06 mov eax, esi ; +0x333, 0x18013be0b jmp short loc_18013BE18 ; +0x335, 0x18013be0d mov eax, 2 ; +0x337, 0x18013be0f jmp short loc_18013BE18 ; +0x33c, 0x18013be14 xor eax, eax ; +0x33e, 0x18013be16 mov rcx, [rbp+70h+var_48] ; +0x340, 0x18013be18 xor rcx, rbp; StackCookie ; +0x344, 0x18013be1c call __security_check_cookie ; +0x347, 0x18013be1f lea rsp, [rbp+38h] ; +0x34c, 0x18013be24 pop r15 ; +0x350, 0x18013be28 pop r14 ; +0x352, 0x18013be2a pop r13 ; +0x354, 0x18013be2c pop r12 ; +0x356, 0x18013be2e pop rdi ; +0x358, 0x18013be30 pop rsi ; +0x359, 0x18013be31 pop rbx ; +0x35a, 0x18013be32 pop rbp ; +0x35b, 0x18013be33 retn ; +0x35c, 0x18013be34