; ; cocos2d::extension::CCEditBoxImplWin::openKeyboard from 0x180011cb0 to 0x180012102 (1106 bytes) ; ; 3 xrefs: ; > @ 0x1800281c8 ; > @ 0x18002fdf8 ; > @ 0x18004a308 ; ; 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_8], rbx ; +0x0, 0x180011cb0 mov [rsp-8+arg_10], rsi ; +0x5, 0x180011cb5 push rbp ; +0xa, 0x180011cba push rdi ; +0xb, 0x180011cbb push r12 ; +0xc, 0x180011cbc push r14 ; +0xe, 0x180011cbe push r15 ; +0x10, 0x180011cc0 lea rbp, [rsp-10h] ; +0x12, 0x180011cc2 sub rsp, 110h ; +0x17, 0x180011cc7 mov rax, cs:__security_cookie ; +0x1e, 0x180011cce xor rax, rsp ; +0x25, 0x180011cd5 mov [rbp+30h+var_30], rax ; +0x28, 0x180011cd8 mov rsi, rcx ; +0x2c, 0x180011cdc mov rcx, [rcx+8] ; +0x2f, 0x180011cdf test rcx, rcx ; +0x33, 0x180011ce3 jz short loc_180011CF2 ; +0x36, 0x180011ce6 mov rax, [rcx] ; +0x38, 0x180011ce8 mov rdx, [rsi+10h] ; +0x3b, 0x180011ceb call qword ptr [rax+8] ; +0x3f, 0x180011cef mov rbx, [rsi+10h] ; +0x42, 0x180011cf2 xor r12d, r12d ; +0x46, 0x180011cf6 test rbx, rbx ; +0x49, 0x180011cf9 jz short loc_180011D2E ; +0x4c, 0x180011cfc cmp [rbx+2F8h], r12d ; +0x4e, 0x180011cfe jz short loc_180011D2E ; +0x55, 0x180011d05 call cs:?sharedManager@CCScriptEngineManager@cocos2d@@SAPEAV12@XZ; cocos2d::CCScriptEngineManager::sharedManager(void) ; +0x57, 0x180011d07 mov rcx, [rax] ; +0x5d, 0x180011d0d mov rax, [rcx] ; +0x60, 0x180011d10 mov qword ptr [rsp+130h+var_110], r12 ; +0x63, 0x180011d13 mov r9, rbx ; +0x68, 0x180011d18 lea r8, aBegan; "began" ; +0x6b, 0x180011d1b mov edx, [rbx+2F8h] ; +0x72, 0x180011d22 call qword ptr [rax+88h] ; +0x78, 0x180011d28 mov rcx, [rsi+20h] ; +0x7e, 0x180011d2e add rcx, 258h ; +0x82, 0x180011d32 mov rax, [rcx] ; +0x89, 0x180011d39 call qword ptr [rax+8] ; +0x8c, 0x180011d3c xorps xmm0, xmm0 ; +0x8f, 0x180011d3f movups xmmword ptr [rsp+130h+var_100], xmm0 ; +0x92, 0x180011d42 mov [rsp+130h+var_F0], r12 ; +0x97, 0x180011d47 mov [rsp+130h+var_E8], r12 ; +0x9c, 0x180011d4c mov rdi, 0FFFFFFFFFFFFFFFFh ; +0xa1, 0x180011d51 mov r8, rdi ; +0xa8, 0x180011d58 nop dword ptr [rax+rax+00h] ; +0xab, 0x180011d5b inc r8 ; +0xb0, 0x180011d60 cmp [rax+r8], r12b ; +0xb3, 0x180011d63 jnz short loc_180011D60 ; +0xb7, 0x180011d67 mov rdx, rax ; +0xb9, 0x180011d69 lea rcx, [rsp+130h+var_100] ; +0xbc, 0x180011d6c call sub_180003AB0 ; +0xc1, 0x180011d71 nop ; +0xc6, 0x180011d76 cmp [rsp+130h+var_F0], 0 ; +0xc7, 0x180011d77 jnz loc_180011EBC ; +0xcd, 0x180011d7d mov r15, [rsp+130h+var_E8] ; +0xd3, 0x180011d83 cmp r15, 0Bh ; +0xd8, 0x180011d88 jb short loc_180011DC4 ; +0xdc, 0x180011d8c lea rbx, [rsp+130h+var_100] ; +0xde, 0x180011d8e cmp r15, 0Fh ; +0xe3, 0x180011d93 cmova rbx, [rsp+130h+var_100] ; +0xe7, 0x180011d97 mov [rsp+130h+var_F0], 0Bh ; +0xed, 0x180011d9d mov r8d, 0Bh; Size ; +0xf6, 0x180011da6 lea rdx, aEnterValue; "Enter value" ; +0xfc, 0x180011dac mov rcx, rbx; void * ; +0x103, 0x180011db3 call memmove ; +0x106, 0x180011db6 mov byte ptr [rbx+0Bh], 0 ; +0x10b, 0x180011dbb jmp loc_180011EBC ; +0x10f, 0x180011dbf mov rcx, r15 ; +0x114, 0x180011dc4 shr rcx, 1 ; +0x117, 0x180011dc7 mov r14, 7FFFFFFFFFFFFFFFh ; +0x11a, 0x180011dca mov rax, r14 ; +0x124, 0x180011dd4 sub rax, rcx ; +0x127, 0x180011dd7 cmp r15, rax ; +0x12a, 0x180011dda jbe short loc_180011E0C ; +0x12d, 0x180011ddd mov rax, 8000000000000000h ; +0x12f, 0x180011ddf add rax, 27h ; ''' ; +0x139, 0x180011de9 mov rcx, rax; Size ; +0x13d, 0x180011ded call ??2@YAPEAX_K@Z; operator new(unsigned __int64) ; +0x140, 0x180011df0 test rax, rax ; +0x145, 0x180011df5 jz loc_180012075 ; +0x148, 0x180011df8 lea rbx, [rax+27h] ; +0x14e, 0x180011dfe and rbx, 0FFFFFFFFFFFFFFE0h ; +0x152, 0x180011e02 mov [rbx-8], rax ; +0x156, 0x180011e06 jmp short loc_180011E4B ; +0x15a, 0x180011e0a lea rax, [r15+rcx] ; +0x15c, 0x180011e0c mov r14d, 0Fh ; +0x160, 0x180011e10 cmp rax, r14 ; +0x166, 0x180011e16 cmova r14, rax ; +0x169, 0x180011e19 lea rcx, [r14+1]; Size ; +0x16d, 0x180011e1d cmp rcx, 1000h ; +0x171, 0x180011e21 jb short loc_180011E39 ; +0x178, 0x180011e28 lea rax, [rcx+27h] ; +0x17a, 0x180011e2a cmp rax, rcx ; +0x17e, 0x180011e2e jbe loc_1800120FC ; +0x181, 0x180011e31 jmp short loc_180011DED ; +0x187, 0x180011e37 test rcx, rcx ; +0x189, 0x180011e39 jz short loc_180011E48 ; +0x18c, 0x180011e3c call ??2@YAPEAX_K@Z; operator new(unsigned __int64) ; +0x18e, 0x180011e3e mov rbx, rax ; +0x193, 0x180011e43 jmp short loc_180011E4B ; +0x196, 0x180011e46 mov rbx, r12 ; +0x198, 0x180011e48 mov [rsp+130h+var_F0], 0Bh ; +0x19b, 0x180011e4b mov [rsp+130h+var_E8], r14 ; +0x1a4, 0x180011e54 movsd xmm0, qword ptr cs:aEnterValue; "Enter value" ; +0x1a9, 0x180011e59 movsd qword ptr [rbx], xmm0 ; +0x1b1, 0x180011e61 movzx eax, word ptr cs:aEnterValue+8; "lue" ; +0x1b5, 0x180011e65 mov [rbx+8], ax ; +0x1bc, 0x180011e6c movzx eax, byte ptr cs:aEnterValue+0Ah; "e" ; +0x1c0, 0x180011e70 mov [rbx+0Ah], al ; +0x1c7, 0x180011e77 mov byte ptr [rbx+0Bh], 0 ; +0x1ca, 0x180011e7a cmp r15, 0Fh ; +0x1ce, 0x180011e7e jbe short loc_180011EB7 ; +0x1d2, 0x180011e82 lea rdx, [r15+1] ; +0x1d4, 0x180011e84 mov rcx, [rsp+130h+var_100] ; +0x1d8, 0x180011e88 mov rax, rcx ; +0x1dd, 0x180011e8d cmp rdx, 1000h ; +0x1e0, 0x180011e90 jb short loc_180011EB2 ; +0x1e7, 0x180011e97 add rdx, 27h ; ''' ; +0x1e9, 0x180011e99 mov rcx, [rcx-8]; Block ; +0x1ed, 0x180011e9d sub rax, rcx ; +0x1f1, 0x180011ea1 add rax, 0FFFFFFFFFFFFFFF8h ; +0x1f4, 0x180011ea4 cmp rax, 1Fh ; +0x1f8, 0x180011ea8 ja loc_180012075 ; +0x1fc, 0x180011eac call j_j_free ; +0x202, 0x180011eb2 mov [rsp+130h+var_100], rbx ; +0x207, 0x180011eb7 xorps xmm0, xmm0 ; +0x20c, 0x180011ebc xor eax, eax ; +0x20f, 0x180011ebf movups xmmword ptr [rbp+30h+Destination], xmm0 ; +0x211, 0x180011ec1 movups [rbp+30h+var_90], xmm0 ; +0x215, 0x180011ec5 movups [rbp+30h+var_80], xmm0 ; +0x219, 0x180011ec9 movups [rbp+30h+var_70], xmm0 ; +0x21d, 0x180011ecd movups [rbp+30h+var_60], xmm0 ; +0x221, 0x180011ed1 movups [rbp+30h+var_50], xmm0 ; +0x225, 0x180011ed5 mov [rbp+30h+var_40], eax ; +0x229, 0x180011ed9 mov rax, [rsi] ; +0x22c, 0x180011edc mov rcx, rsi ; +0x22f, 0x180011edf call qword ptr [rax+68h] ; +0x232, 0x180011ee2 xorps xmm0, xmm0 ; +0x235, 0x180011ee5 movups xmmword ptr [rsp+130h+Source], xmm0 ; +0x238, 0x180011ee8 mov [rsp+130h+var_D0], r12 ; +0x23d, 0x180011eed mov [rsp+130h+var_C8], r12 ; +0x242, 0x180011ef2 mov r8, rdi ; +0x247, 0x180011ef7 nop word ptr [rax+rax+00h] ; +0x24a, 0x180011efa inc r8 ; +0x250, 0x180011f00 cmp byte ptr [rax+r8], 0 ; +0x253, 0x180011f03 jnz short loc_180011F00 ; +0x258, 0x180011f08 mov rdx, rax ; +0x25a, 0x180011f0a lea rcx, [rsp+130h+Source] ; +0x25d, 0x180011f0d call sub_180003AB0 ; +0x262, 0x180011f12 nop ; +0x267, 0x180011f17 cmp [rsp+130h+var_D0], 0 ; +0x268, 0x180011f18 jz short loc_180011F41 ; +0x26e, 0x180011f1e lea rdx, [rsp+130h+Source] ; +0x270, 0x180011f20 cmp [rsp+130h+var_C8], 0Fh ; +0x275, 0x180011f25 cmova rdx, [rsp+130h+Source]; Source ; +0x27b, 0x180011f2b mov r8d, 64h ; 'd'; Count ; +0x281, 0x180011f31 lea rcx, [rbp+30h+Destination]; Destination ; +0x287, 0x180011f37 call cs:strncpy ; +0x28b, 0x180011f3b lea rdx, [rsp+130h+var_100] ; +0x291, 0x180011f41 cmp [rsp+130h+var_E8], 0Fh ; +0x296, 0x180011f46 cmova rdx, [rsp+130h+var_100]; char * ; +0x29c, 0x180011f4c mov [rsp+130h+var_108], r12; HWND ; +0x2a2, 0x180011f52 mov [rsp+130h+var_110], 0; bool ; +0x2a7, 0x180011f57 mov r9d, 64h ; 'd'; unsigned int ; +0x2ac, 0x180011f5c lea r8, [rbp+30h+Destination]; char * ; +0x2b2, 0x180011f62 lea rcx, aInput; "Input" ; +0x2b6, 0x180011f66 call ?InputBox@CWin32InputBox@@SA_JPEBD0PEADK_NPEAUHWND__@@@Z; CWin32InputBox::InputBox(char const *,char const *,char *,ulong,bool,HWND__ *) ; +0x2bd, 0x180011f6d mov rbx, rax ; +0x2c2, 0x180011f72 cmp rax, 1 ; +0x2c5, 0x180011f75 jnz short loc_180011F89 ; +0x2c9, 0x180011f79 mov r8, [rsi] ; +0x2cb, 0x180011f7b lea rdx, [rbp+30h+Destination] ; +0x2ce, 0x180011f7e mov rcx, rsi ; +0x2d2, 0x180011f82 call qword ptr [r8+60h] ; +0x2d5, 0x180011f85 cmp qword ptr [rsi+8], 0 ; +0x2d9, 0x180011f89 jz loc_180012041 ; +0x2de, 0x180011f8e cmp rbx, 1 ; +0x2e4, 0x180011f94 jnz loc_180012024 ; +0x2e8, 0x180011f98 mov rax, [rsi] ; +0x2ee, 0x180011f9e mov rcx, rsi ; +0x2f1, 0x180011fa1 call qword ptr [rax+68h] ; +0x2f4, 0x180011fa4 xorps xmm0, xmm0 ; +0x2f7, 0x180011fa7 movups xmmword ptr [rsp+130h+Block], xmm0 ; +0x2fa, 0x180011faa xorps xmm1, xmm1 ; +0x2ff, 0x180011faf movdqu [rbp+30h+var_B0], xmm1 ; +0x302, 0x180011fb2 inc rdi ; +0x307, 0x180011fb7 cmp byte ptr [rax+rdi], 0 ; +0x30a, 0x180011fba jnz short loc_180011FB7 ; +0x30e, 0x180011fbe mov r8, rdi ; +0x310, 0x180011fc0 mov rdx, rax ; +0x313, 0x180011fc3 lea rcx, [rsp+130h+Block] ; +0x316, 0x180011fc6 call sub_180003AB0 ; +0x31b, 0x180011fcb nop ; +0x320, 0x180011fd0 mov rcx, [rsi+8] ; +0x321, 0x180011fd1 mov rax, [rcx] ; +0x325, 0x180011fd5 lea r8, [rsp+130h+Block] ; +0x328, 0x180011fd8 mov rdx, [rsi+10h] ; +0x32d, 0x180011fdd call qword ptr [rax+18h] ; +0x331, 0x180011fe1 nop ; +0x334, 0x180011fe4 mov rdx, qword ptr [rbp+30h+var_B0+8] ; +0x335, 0x180011fe5 cmp rdx, 0Fh ; +0x339, 0x180011fe9 jbe short loc_180012024 ; +0x33d, 0x180011fed inc rdx ; +0x33f, 0x180011fef mov rcx, [rsp+130h+Block]; Block ; +0x342, 0x180011ff2 mov rax, rcx ; +0x347, 0x180011ff7 cmp rdx, 1000h ; +0x34a, 0x180011ffa jb short loc_18001201F ; +0x351, 0x180012001 add rdx, 27h ; ''' ; +0x353, 0x180012003 mov rcx, [rcx-8] ; +0x357, 0x180012007 sub rax, rcx ; +0x35b, 0x18001200b add rax, 0FFFFFFFFFFFFFFF8h ; +0x35e, 0x18001200e cmp rax, 1Fh ; +0x362, 0x180012012 jbe short loc_18001201F ; +0x366, 0x180012016 call cs:_invalid_parameter_noinfo_noreturn ; +0x368, 0x180012018 db 0CCh ; +0x36e, 0x18001201e call j_j_free ; +0x36f, 0x18001201f mov rcx, [rsi+8] ; +0x374, 0x180012024 mov rax, [rcx] ; +0x378, 0x180012028 mov rdx, [rsi+10h] ; +0x37b, 0x18001202b call qword ptr [rax+10h] ; +0x37f, 0x18001202f mov rcx, [rsi+8] ; +0x382, 0x180012032 mov rax, [rcx] ; +0x386, 0x180012036 mov rdx, [rsi+10h] ; +0x389, 0x180012039 call qword ptr [rax+20h] ; +0x38d, 0x18001203d nop ; +0x390, 0x180012040 mov rdx, [rsp+130h+var_C8] ; +0x391, 0x180012041 cmp rdx, 0Fh ; +0x396, 0x180012046 jbe short loc_180012081 ; +0x39a, 0x18001204a inc rdx ; +0x39c, 0x18001204c mov rcx, [rsp+130h+Source]; Block ; +0x39f, 0x18001204f mov rax, rcx ; +0x3a4, 0x180012054 cmp rdx, 1000h ; +0x3a7, 0x180012057 jb short loc_18001207C ; +0x3ae, 0x18001205e add rdx, 27h ; ''' ; +0x3b0, 0x180012060 mov rcx, [rcx-8] ; +0x3b4, 0x180012064 sub rax, rcx ; +0x3b8, 0x180012068 add rax, 0FFFFFFFFFFFFFFF8h ; +0x3bb, 0x18001206b cmp rax, 1Fh ; +0x3bf, 0x18001206f jbe short loc_18001207C ; +0x3c3, 0x180012073 call cs:_invalid_parameter_noinfo_noreturn ; +0x3c5, 0x180012075 align 4 ; +0x3cb, 0x18001207b call j_j_free ; +0x3cc, 0x18001207c mov [rsp+130h+var_D0], r12 ; +0x3d1, 0x180012081 mov [rsp+130h+var_C8], 0Fh ; +0x3d6, 0x180012086 mov byte ptr [rsp+130h+Source], 0 ; +0x3df, 0x18001208f mov rdx, [rsp+130h+var_E8] ; +0x3e4, 0x180012094 cmp rdx, 0Fh ; +0x3e9, 0x180012099 jbe short loc_1800120D4 ; +0x3ed, 0x18001209d inc rdx ; +0x3ef, 0x18001209f mov rcx, [rsp+130h+var_100]; Block ; +0x3f2, 0x1800120a2 mov rax, rcx ; +0x3f7, 0x1800120a7 cmp rdx, 1000h ; +0x3fa, 0x1800120aa jb short loc_1800120CF ; +0x401, 0x1800120b1 add rdx, 27h ; ''' ; +0x403, 0x1800120b3 mov rcx, [rcx-8] ; +0x407, 0x1800120b7 sub rax, rcx ; +0x40b, 0x1800120bb add rax, 0FFFFFFFFFFFFFFF8h ; +0x40e, 0x1800120be cmp rax, 1Fh ; +0x412, 0x1800120c2 jbe short loc_1800120CF ; +0x416, 0x1800120c6 call cs:_invalid_parameter_noinfo_noreturn ; +0x418, 0x1800120c8 db 0CCh ; +0x41e, 0x1800120ce call j_j_free ; +0x41f, 0x1800120cf mov rcx, [rbp+30h+var_30] ; +0x424, 0x1800120d4 xor rcx, rsp; StackCookie ; +0x428, 0x1800120d8 call __security_check_cookie ; +0x42b, 0x1800120db lea r11, [rsp+130h+var_20] ; +0x430, 0x1800120e0 mov rbx, [r11+38h] ; +0x438, 0x1800120e8 mov rsi, [r11+40h] ; +0x43c, 0x1800120ec mov rsp, r11 ; +0x440, 0x1800120f0 pop r15 ; +0x443, 0x1800120f3 pop r14 ; +0x445, 0x1800120f5 pop r12 ; +0x447, 0x1800120f7 pop rdi ; +0x449, 0x1800120f9 pop rbp ; +0x44a, 0x1800120fa retn ; +0x44b, 0x1800120fb call ?cancel_current_task@Concurrency@@YAXXZ; Concurrency::cancel_current_task(void) ; +0x44c, 0x1800120fc align 2 ; +0x451, 0x180012101