; ; sub_1800189D0 from 0x1800189d0 to 0x180018c07 (567 bytes) ; ; 5 xrefs: ; > sub_180017930 @ 0x18001794d ; > @ 0x18002f370 ; > @ 0x18002f380 ; > @ 0x18002f398 ; > @ 0x18004ab54 ; ; 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 ; test r9, r9 ; +0x0, 0x1800189d0 jz locret_180018BFA ; +0x3, 0x1800189d3 mov [rsp+Src], r8 ; +0x9, 0x1800189d9 push rbx ; +0xe, 0x1800189de push rbp ; +0xf, 0x1800189df push r12 ; +0x10, 0x1800189e0 push r13 ; +0x12, 0x1800189e2 push r14 ; +0x14, 0x1800189e4 push r15 ; +0x16, 0x1800189e6 sub rsp, 38h ; +0x18, 0x1800189e8 mov r15, [rcx+8] ; +0x1c, 0x1800189ec mov r14, rcx ; +0x20, 0x1800189f0 mov r13, [rcx] ; +0x23, 0x1800189f3 mov rbp, r9 ; +0x26, 0x1800189f6 mov rcx, [rcx+10h] ; +0x29, 0x1800189f9 mov r12, r8 ; +0x2d, 0x1800189fd mov rax, rcx ; +0x30, 0x180018a00 mov [rsp+68h+var_38], rsi ; +0x33, 0x180018a03 sub rax, r15 ; +0x38, 0x180018a08 mov [rsp+68h+var_40], rdi ; +0x3b, 0x180018a0b mov rbx, rdx ; +0x40, 0x180018a10 cmp r9, rax ; +0x43, 0x180018a13 jbe loc_180018B75 ; +0x46, 0x180018a16 mov r12, r15 ; +0x4c, 0x180018a1c mov rsi, 7FFFFFFFFFFFFFFFh ; +0x4f, 0x180018a1f sub r12, r13 ; +0x59, 0x180018a29 mov rax, rsi ; +0x5c, 0x180018a2c sub rax, r12 ; +0x5f, 0x180018a2f cmp r9, rax ; +0x62, 0x180018a32 ja loc_180018BFB ; +0x65, 0x180018a35 sub rcx, r13 ; +0x6b, 0x180018a3b lea r8, [r12+r9] ; +0x6e, 0x180018a3e mov rdx, rcx ; +0x72, 0x180018a42 mov [rsp+68h+arg_18], r8 ; +0x75, 0x180018a45 shr rdx, 1 ; +0x7d, 0x180018a4d mov rax, rsi ; +0x80, 0x180018a50 sub rax, rdx ; +0x83, 0x180018a53 cmp rcx, rax ; +0x86, 0x180018a56 jbe short loc_180018A81 ; +0x89, 0x180018a59 mov rcx, 8000000000000026h; Size ; +0x8b, 0x180018a5b call ??2@YAPEAX_K@Z; operator new(unsigned __int64) ; +0x95, 0x180018a65 test rax, rax ; +0x9a, 0x180018a6a jz loc_180018B6E ; +0x9d, 0x180018a6d lea rdi, [rax+27h] ; +0xa3, 0x180018a73 and rdi, 0FFFFFFFFFFFFFFE0h ; +0xa7, 0x180018a77 mov [rdi-8], rax ; +0xab, 0x180018a7b jmp short loc_180018ABB ; +0xaf, 0x180018a7f lea rax, [rdx+rcx] ; +0xb1, 0x180018a81 mov rsi, r8 ; +0xb5, 0x180018a85 cmp rax, r8 ; +0xb8, 0x180018a88 cmovnb rsi, rax ; +0xbb, 0x180018a8b cmp rsi, 1000h ; +0xbf, 0x180018a8f jb short loc_180018AA7 ; +0xc6, 0x180018a96 lea rcx, [rsi+27h] ; +0xc8, 0x180018a98 cmp rcx, rsi ; +0xcc, 0x180018a9c jbe loc_180018C01 ; +0xcf, 0x180018a9f jmp short loc_180018A65 ; +0xd5, 0x180018aa5 test rsi, rsi ; +0xd7, 0x180018aa7 jz short loc_180018AB9 ; +0xda, 0x180018aaa mov rcx, rsi; Size ; +0xdc, 0x180018aac call ??2@YAPEAX_K@Z; operator new(unsigned __int64) ; +0xdf, 0x180018aaf mov rdi, rax ; +0xe4, 0x180018ab4 jmp short loc_180018ABB ; +0xe7, 0x180018ab7 xor edi, edi ; +0xe9, 0x180018ab9 mov rdx, [rsp+68h+Src]; Src ; +0xeb, 0x180018abb mov rax, rbx ; +0xf3, 0x180018ac3 sub rax, r13 ; +0xf6, 0x180018ac6 mov r8, rbp; Size ; +0xf9, 0x180018ac9 mov [rsp+68h+Size], rax ; +0xfc, 0x180018acc add rax, rdi ; +0x101, 0x180018ad1 mov rcx, rax; void * ; +0x104, 0x180018ad4 mov [rsp+68h+arg_8], rax ; +0x107, 0x180018ad7 call memmove ; +0x10c, 0x180018adc cmp rbp, 1 ; +0x111, 0x180018ae1 jnz short loc_180018AF7 ; +0x115, 0x180018ae5 cmp rbx, r15 ; +0x117, 0x180018ae7 jnz short loc_180018AF7 ; +0x11a, 0x180018aea mov r8, r12 ; +0x11c, 0x180018aec mov rdx, r13 ; +0x11f, 0x180018aef mov rcx, rdi ; +0x122, 0x180018af2 jmp short loc_180018B18 ; +0x125, 0x180018af5 mov r8, [rsp+68h+Size]; Size ; +0x127, 0x180018af7 mov rdx, r13; Src ; +0x12c, 0x180018afc mov rcx, rdi; void * ; +0x12f, 0x180018aff call memmove ; +0x132, 0x180018b02 mov rcx, [rsp+68h+arg_8] ; +0x137, 0x180018b07 sub r15, rbx ; +0x13c, 0x180018b0c add rcx, rbp; void * ; +0x13f, 0x180018b0f mov r8, r15; Size ; +0x142, 0x180018b12 mov rdx, rbx; Src ; +0x145, 0x180018b15 call memmove ; +0x148, 0x180018b18 mov rcx, [r14] ; +0x14d, 0x180018b1d test rcx, rcx ; +0x150, 0x180018b20 jz short loc_180018B52 ; +0x153, 0x180018b23 mov rdx, [r14+10h] ; +0x155, 0x180018b25 sub rdx, rcx ; +0x159, 0x180018b29 cmp rdx, 1000h ; +0x15c, 0x180018b2c jb short loc_180018B4D ; +0x163, 0x180018b33 mov r8, [rcx-8] ; +0x165, 0x180018b35 add rdx, 27h ; ''' ; +0x169, 0x180018b39 sub rcx, r8 ; +0x16d, 0x180018b3d lea rax, [rcx-8] ; +0x170, 0x180018b40 cmp rax, 1Fh ; +0x174, 0x180018b44 ja short loc_180018B6E ; +0x178, 0x180018b48 mov rcx, r8; Block ; +0x17a, 0x180018b4a call j_j_free ; +0x17d, 0x180018b4d mov rax, [rsp+68h+arg_18] ; +0x182, 0x180018b52 add rax, rdi ; +0x18a, 0x180018b5a mov [r14], rdi ; +0x18d, 0x180018b5d mov [r14+8], rax ; +0x190, 0x180018b60 lea rax, [rdi+rsi] ; +0x194, 0x180018b64 mov [r14+10h], rax ; +0x198, 0x180018b68 jmp short loc_180018BE2 ; +0x19c, 0x180018b6c call cs:_invalid_parameter_noinfo_noreturn ; +0x19e, 0x180018b6e db 0CCh ; +0x1a4, 0x180018b74 mov rsi, r15 ; +0x1a5, 0x180018b75 sub rsi, rbx ; +0x1a8, 0x180018b78 cmp rbp, rsi ; +0x1ab, 0x180018b7b jnb short loc_180018BBD ; +0x1ae, 0x180018b7e mov rdx, r15 ; +0x1b0, 0x180018b80 mov r8, rbp; Size ; +0x1b3, 0x180018b83 sub rdx, rbp; Src ; +0x1b6, 0x180018b86 mov rcx, r15; void * ; +0x1b9, 0x180018b89 call memmove ; +0x1bc, 0x180018b8c lea rax, [r15+rbp] ; +0x1c1, 0x180018b91 sub rsi, rbp ; +0x1c5, 0x180018b95 sub r15, rsi ; +0x1c8, 0x180018b98 mov [r14+8], rax ; +0x1cb, 0x180018b9b mov rcx, r15; void * ; +0x1cf, 0x180018b9f mov r8, rsi; Size ; +0x1d2, 0x180018ba2 mov rdx, rbx; Src ; +0x1d5, 0x180018ba5 call memmove ; +0x1d8, 0x180018ba8 mov r8, rbp; Size ; +0x1dd, 0x180018bad mov rdx, r12; Src ; +0x1e0, 0x180018bb0 mov rcx, rbx; void * ; +0x1e3, 0x180018bb3 call memmove ; +0x1e6, 0x180018bb6 jmp short loc_180018BE2 ; +0x1eb, 0x180018bbb lea rdi, [rdx+r9] ; +0x1ed, 0x180018bbd mov r8, rsi; Size ; +0x1f1, 0x180018bc1 mov rcx, rdi; void * ; +0x1f4, 0x180018bc4 call memmove ; +0x1f7, 0x180018bc7 lea rax, [rsi+rdi] ; +0x1fc, 0x180018bcc mov r8, rbp; Size ; +0x200, 0x180018bd0 mov rdx, r12; Src ; +0x203, 0x180018bd3 mov [r14+8], rax ; +0x206, 0x180018bd6 mov rcx, rbx; void * ; +0x20a, 0x180018bda call memmove ; +0x20d, 0x180018bdd mov rsi, [rsp+68h+var_38] ; +0x212, 0x180018be2 mov rdi, [rsp+68h+var_40] ; +0x217, 0x180018be7 add rsp, 38h ; +0x21c, 0x180018bec pop r15 ; +0x220, 0x180018bf0 pop r14 ; +0x222, 0x180018bf2 pop r13 ; +0x224, 0x180018bf4 pop r12 ; +0x226, 0x180018bf6 pop rbp ; +0x228, 0x180018bf8 pop rbx ; +0x229, 0x180018bf9 retn ; +0x22a, 0x180018bfa call sub_180003530 ; +0x22b, 0x180018bfb db 0CCh ; +0x230, 0x180018c00 call ?cancel_current_task@Concurrency@@YAXXZ; Concurrency::cancel_current_task(void) ; +0x231, 0x180018c01 db 0CCh ; +0x236, 0x180018c06