; ; sub_180003160 from 0x180003160 to 0x18000331d (445 bytes) ; ; 2 xrefs: ; > sub_180003320 @ 0x1800034fb ; > @ 0x1800491bc ; ; 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], r8 ; +0x0, 0x180003160 push rbx ; +0x5, 0x180003165 push rsi ; +0x6, 0x180003166 push rdi ; +0x7, 0x180003167 push r12 ; +0x8, 0x180003168 push r13 ; +0xa, 0x18000316a push r14 ; +0xc, 0x18000316c push r15 ; +0xe, 0x18000316e sub rsp, 30h ; +0x10, 0x180003170 mov r13, rdx ; +0x14, 0x180003174 mov rdi, rcx ; +0x17, 0x180003177 mov rax, [rcx] ; +0x1a, 0x18000317a mov r12, rdx ; +0x1d, 0x18000317d sub r12, rax ; +0x20, 0x180003180 mov r15, [rcx+8] ; +0x23, 0x180003183 sub r15, rax ; +0x27, 0x180003187 sar r15, 5 ; +0x2a, 0x18000318a mov r9, 7FFFFFFFFFFFFFFh ; +0x2e, 0x18000318e cmp r15, r9 ; +0x38, 0x180003198 jz loc_180003317 ; +0x3b, 0x18000319b inc r15 ; +0x41, 0x1800031a1 mov rcx, [rcx+10h] ; +0x44, 0x1800031a4 sub rcx, rax ; +0x48, 0x1800031a8 sar rcx, 5 ; +0x4b, 0x1800031ab mov rdx, rcx ; +0x4f, 0x1800031af shr rdx, 1 ; +0x52, 0x1800031b2 mov rax, r9 ; +0x55, 0x1800031b5 sub rax, rdx ; +0x58, 0x1800031b8 cmp rcx, rax ; +0x5b, 0x1800031bb ja loc_180003311 ; +0x5e, 0x1800031be lea rax, [rdx+rcx] ; +0x64, 0x1800031c4 mov r14, r15 ; +0x68, 0x1800031c8 cmp rax, r15 ; +0x6b, 0x1800031cb cmovnb r14, rax ; +0x6e, 0x1800031ce cmp r14, r9 ; +0x72, 0x1800031d2 ja loc_180003311 ; +0x75, 0x1800031d5 mov rsi, r14 ; +0x7b, 0x1800031db shl rsi, 5 ; +0x7e, 0x1800031de mov [rsp+68h+arg_8], r14 ; +0x82, 0x1800031e2 cmp rsi, 1000h ; +0x87, 0x1800031e7 jb short loc_180003221 ; +0x8e, 0x1800031ee lea rcx, [rsi+27h]; Size ; +0x90, 0x1800031f0 cmp rcx, rsi ; +0x94, 0x1800031f4 jbe loc_180003311 ; +0x97, 0x1800031f7 call ??2@YAPEAX_K@Z; operator new(unsigned __int64) ; +0x9d, 0x1800031fd test rax, rax ; +0xa2, 0x180003202 jz loc_18000330A ; +0xa5, 0x180003205 lea rbx, [rax+27h] ; +0xab, 0x18000320b and rbx, 0FFFFFFFFFFFFFFE0h ; +0xaf, 0x18000320f mov [rbx-8], rax ; +0xb3, 0x180003213 mov r8, [rsp+68h+arg_10] ; +0xb7, 0x180003217 jmp short loc_180003242 ; +0xbf, 0x18000321f test rsi, rsi ; +0xc1, 0x180003221 jz short loc_18000323B ; +0xc4, 0x180003224 mov rcx, rsi; Size ; +0xc6, 0x180003226 call ??2@YAPEAX_K@Z; operator new(unsigned __int64) ; +0xc9, 0x180003229 mov rbx, rax ; +0xce, 0x18000322e mov r8, [rsp+68h+arg_10] ; +0xd1, 0x180003231 jmp short loc_18000323D ; +0xd9, 0x180003239 xor ebx, ebx ; +0xdb, 0x18000323b mov [rsp+68h+arg_8], r14 ; +0xdd, 0x18000323d mov [rsp+68h+arg_18], rbx ; +0xe2, 0x180003242 and r12, 0FFFFFFFFFFFFFFE0h ; +0xea, 0x18000324a lea r14, [r12+rbx] ; +0xee, 0x18000324e lea r12, [r14+20h] ; +0xf2, 0x180003252 mov [rsp+68h+var_48], r12 ; +0xf6, 0x180003256 mov [rsp+68h+arg_0], r12 ; +0xfb, 0x18000325b mov rdx, r8 ; +0x100, 0x180003260 mov rcx, r14 ; +0x103, 0x180003263 call sub_180003F50 ; +0x106, 0x180003266 mov [rsp+68h+arg_0], r14 ; +0x10b, 0x18000326b mov rdx, [rdi+8] ; +0x110, 0x180003270 mov rcx, [rdi] ; +0x114, 0x180003274 mov r8, rbx ; +0x117, 0x180003277 cmp r13, rdx ; +0x11a, 0x18000327a jz short loc_180003296 ; +0x11d, 0x18000327d mov rdx, r13 ; +0x11f, 0x18000327f call sub_1800030E0 ; +0x122, 0x180003282 mov [rsp+68h+arg_0], rbx ; +0x127, 0x180003287 mov r8, r12 ; +0x12c, 0x18000328c mov rdx, [rdi+8] ; +0x12f, 0x18000328f mov rcx, r13 ; +0x133, 0x180003293 call sub_1800030E0 ; +0x136, 0x180003296 nop ; +0x13b, 0x18000329b mov rcx, [rdi] ; +0x13c, 0x18000329c test rcx, rcx ; +0x13f, 0x18000329f jz short loc_1800032E1 ; +0x142, 0x1800032a2 mov rdx, [rdi+8] ; +0x144, 0x1800032a4 call sub_1800036B0 ; +0x148, 0x1800032a8 mov rcx, [rdi] ; +0x14d, 0x1800032ad mov rdx, [rdi+10h] ; +0x150, 0x1800032b0 sub rdx, rcx ; +0x154, 0x1800032b4 and rdx, 0FFFFFFFFFFFFFFE0h ; +0x157, 0x1800032b7 cmp rdx, 1000h ; +0x15b, 0x1800032bb jb short loc_1800032DC ; +0x162, 0x1800032c2 add rdx, 27h ; ''' ; +0x164, 0x1800032c4 mov r8, [rcx-8] ; +0x168, 0x1800032c8 sub rcx, r8 ; +0x16c, 0x1800032cc lea rax, [rcx-8] ; +0x16f, 0x1800032cf cmp rax, 1Fh ; +0x173, 0x1800032d3 ja short loc_18000330A ; +0x177, 0x1800032d7 mov rcx, r8; Block ; +0x179, 0x1800032d9 call j_j_free ; +0x17c, 0x1800032dc mov [rdi], rbx ; +0x181, 0x1800032e1 shl r15, 5 ; +0x184, 0x1800032e4 add r15, rbx ; +0x188, 0x1800032e8 mov [rdi+8], r15 ; +0x18b, 0x1800032eb lea rcx, [rsi+rbx] ; +0x18f, 0x1800032ef mov [rdi+10h], rcx ; +0x193, 0x1800032f3 mov rax, r14 ; +0x197, 0x1800032f7 add rsp, 30h ; +0x19a, 0x1800032fa pop r15 ; +0x19e, 0x1800032fe pop r14 ; +0x1a0, 0x180003300 pop r13 ; +0x1a2, 0x180003302 pop r12 ; +0x1a4, 0x180003304 pop rdi ; +0x1a6, 0x180003306 pop rsi ; +0x1a7, 0x180003307 pop rbx ; +0x1a8, 0x180003308 retn ; +0x1a9, 0x180003309 call cs:_invalid_parameter_noinfo_noreturn ; +0x1aa, 0x18000330a db 0CCh ; +0x1b0, 0x180003310 call ?cancel_current_task@Concurrency@@YAXXZ; Concurrency::cancel_current_task(void) ; +0x1b1, 0x180003311 db 0CCh ; +0x1b6, 0x180003316 call sub_180003530 ; +0x1b7, 0x180003317 db 0CCh ; +0x1bc, 0x18000331c