; ; sub_180017220 from 0x180017220 to 0x18001744f (559 bytes) ; ; 2 xrefs: ; > StartAddress @ 0x180018c99 ; > @ 0x18004aa28 ; ; 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_8], rbx ; +0x0, 0x180017220 mov [rsp+arg_10], rbp ; +0x5, 0x180017225 push rsi ; +0xa, 0x18001722a push rdi ; +0xb, 0x18001722b push r14 ; +0xc, 0x18001722c sub rsp, 70h ; +0xe, 0x18001722e mov rax, cs:__security_cookie ; +0x12, 0x180017232 xor rax, rsp ; +0x19, 0x180017239 mov [rsp+88h+var_28], rax ; +0x1c, 0x18001723c mov r14, rcx ; +0x21, 0x180017241 xor ebp, ebp ; +0x24, 0x180017244 mov [rsp+88h+var_30], rbp ; +0x26, 0x180017246 mov rdi, [rcx] ; +0x2b, 0x18001724b add rdi, 40h ; '@' ; +0x2e, 0x18001724e mov rcx, rdi; _Mtx_t ; +0x32, 0x180017252 call cs:_Mtx_lock ; +0x35, 0x180017255 test eax, eax ; +0x3b, 0x18001725b jnz loc_1800173E2 ; +0x3d, 0x18001725d mov rbx, rdi ; +0x43, 0x180017263 nop word ptr [rax+rax+00000000h] ; +0x46, 0x180017266 cmp dword ptr [rbx+4Ch], 7FFFFFFFh ; +0x50, 0x180017270 jz loc_18001743C ; +0x57, 0x180017277 mov rbx, [r14] ; +0x5d, 0x18001727d cmp byte ptr [rbx+0D8h], 0 ; +0x60, 0x180017280 jnz short loc_1800172A2 ; +0x67, 0x180017287 cmp qword ptr [rbx+38h], 0 ; +0x69, 0x180017289 jnz short loc_1800172A2 ; +0x6e, 0x18001728e mov rdx, rdi; _Mtx_t ; +0x70, 0x180017290 lea rcx, [rbx+90h]; _Cnd_t ; +0x73, 0x180017293 call cs:_Cnd_wait ; +0x7a, 0x18001729a jmp short loc_180017280 ; +0x80, 0x1800172a0 mov rax, [r14] ; +0x82, 0x1800172a2 cmp byte ptr [rax+0D8h], 0 ; +0x85, 0x1800172a5 jz short loc_1800172B9 ; +0x8c, 0x1800172ac cmp qword ptr [rax+38h], 0 ; +0x8e, 0x1800172ae jz loc_1800173EE ; +0x93, 0x1800172b3 mov rcx, [rax+28h] ; +0x99, 0x1800172b9 dec rcx ; +0x9d, 0x1800172bd and rcx, [rax+30h] ; +0xa0, 0x1800172c0 mov rax, [rax+20h] ; +0xa4, 0x1800172c4 mov rbx, [rax+rcx*8] ; +0xa8, 0x1800172c8 lea rax, [rsp+88h+var_68] ; +0xac, 0x1800172cc cmp rax, rbx ; +0xb1, 0x1800172d1 jz short loc_180017334 ; +0xb4, 0x1800172d4 mov rcx, [rsp+88h+var_30] ; +0xb6, 0x1800172d6 test rcx, rcx ; +0xbb, 0x1800172db jz short loc_1800172F6 ; +0xbe, 0x1800172de mov rax, [rcx] ; +0xc0, 0x1800172e0 lea rdx, [rsp+88h+var_68] ; +0xc3, 0x1800172e3 cmp rcx, rdx ; +0xc8, 0x1800172e8 setnz dl ; +0xcb, 0x1800172eb call qword ptr [rax+20h] ; +0xce, 0x1800172ee mov [rsp+88h+var_30], rbp ; +0xd1, 0x1800172f1 mov rcx, [rbx+38h] ; +0xd6, 0x1800172f6 test rcx, rcx ; +0xda, 0x1800172fa jz short loc_180017334 ; +0xdd, 0x1800172fd cmp rcx, rbx ; +0xdf, 0x1800172ff jnz short loc_18001732B ; +0xe2, 0x180017302 mov rax, [rcx] ; +0xe4, 0x180017304 lea rdx, [rsp+88h+var_68] ; +0xe7, 0x180017307 call qword ptr [rax+8] ; +0xec, 0x18001730c mov [rsp+88h+var_30], rax ; +0xef, 0x18001730f mov rcx, [rbx+38h] ; +0xf4, 0x180017314 test rcx, rcx ; +0xf8, 0x180017318 jz short loc_180017334 ; +0xfb, 0x18001731b mov rax, [rcx] ; +0xfd, 0x18001731d cmp rcx, rbx ; +0x100, 0x180017320 setnz dl ; +0x103, 0x180017323 call qword ptr [rax+20h] ; +0x106, 0x180017326 jmp short loc_180017330 ; +0x109, 0x180017329 mov [rsp+88h+var_30], rcx ; +0x10b, 0x18001732b mov [rbx+38h], rbp ; +0x110, 0x180017330 mov rbx, [r14] ; +0x114, 0x180017334 mov rcx, [rbx+28h] ; +0x117, 0x180017337 dec rcx ; +0x11b, 0x18001733b and rcx, [rbx+30h] ; +0x11e, 0x18001733e mov rax, [rbx+20h] ; +0x122, 0x180017342 mov rsi, [rax+rcx*8] ; +0x126, 0x180017346 mov rcx, [rsi+38h] ; +0x12a, 0x18001734a test rcx, rcx ; +0x12e, 0x18001734e jz short loc_180017363 ; +0x131, 0x180017351 mov rax, [rcx] ; +0x133, 0x180017353 cmp rcx, rsi ; +0x136, 0x180017356 setnz dl ; +0x139, 0x180017359 call qword ptr [rax+20h] ; +0x13c, 0x18001735c mov [rsi+38h], rbp ; +0x13f, 0x18001735f sub qword ptr [rbx+38h], 1 ; +0x143, 0x180017363 jnz short loc_180017370 ; +0x148, 0x180017368 mov [rbx+30h], rbp ; +0x14a, 0x18001736a jmp short loc_180017374 ; +0x14e, 0x18001736e inc qword ptr [rbx+30h] ; +0x150, 0x180017370 mov rcx, rdi; _Mtx_t ; +0x154, 0x180017374 call cs:_Mtx_unlock ; +0x157, 0x180017377 mov rax, [r14] ; +0x15d, 0x18001737d lock inc qword ptr [rax+0E0h] ; +0x160, 0x180017380 mov rcx, [rsp+88h+var_30] ; +0x168, 0x180017388 test rcx, rcx ; +0x16d, 0x18001738d jz loc_180017435 ; +0x170, 0x180017390 mov rax, [rcx] ; +0x176, 0x180017396 call qword ptr [rax+10h] ; +0x179, 0x180017399 mov rax, [r14] ; +0x17c, 0x18001739c lock dec qword ptr [rax+0E0h] ; +0x17f, 0x18001739f mov rcx, [rsp+88h+var_30] ; +0x187, 0x1800173a7 test rcx, rcx ; +0x18c, 0x1800173ac jz short loc_1800173C2 ; +0x18f, 0x1800173af mov rax, [rcx] ; +0x191, 0x1800173b1 lea rdx, [rsp+88h+var_68] ; +0x194, 0x1800173b4 cmp rcx, rdx ; +0x199, 0x1800173b9 setnz dl ; +0x19c, 0x1800173bc call qword ptr [rax+20h] ; +0x19f, 0x1800173bf mov [rsp+88h+var_30], rbp ; +0x1a2, 0x1800173c2 mov rdi, [r14] ; +0x1a7, 0x1800173c7 add rdi, 40h ; '@' ; +0x1aa, 0x1800173ca mov rbx, rdi ; +0x1ae, 0x1800173ce mov rcx, rdi; _Mtx_t ; +0x1b1, 0x1800173d1 call cs:_Mtx_lock ; +0x1b4, 0x1800173d4 test eax, eax ; +0x1ba, 0x1800173da jz loc_180017270 ; +0x1bc, 0x1800173dc mov ecx, 5 ; +0x1c2, 0x1800173e2 call cs:?_Throw_Cpp_error@std@@YAXH@Z; std::_Throw_Cpp_error(int) ; +0x1c7, 0x1800173e7 int 3; Trap to Debugger ; +0x1cd, 0x1800173ed mov rcx, rdi; _Mtx_t ; +0x1ce, 0x1800173ee call cs:_Mtx_unlock ; +0x1d1, 0x1800173f1 nop ; +0x1d7, 0x1800173f7 mov rcx, [rsp+88h+var_30] ; +0x1d8, 0x1800173f8 test rcx, rcx ; +0x1dd, 0x1800173fd jz short loc_180017413 ; +0x1e0, 0x180017400 mov rax, [rcx] ; +0x1e2, 0x180017402 lea rdx, [rsp+88h+var_68] ; +0x1e5, 0x180017405 cmp rcx, rdx ; +0x1ea, 0x18001740a setnz dl ; +0x1ed, 0x18001740d call qword ptr [rax+20h] ; +0x1f0, 0x180017410 mov rcx, [rsp+88h+var_28] ; +0x1f3, 0x180017413 xor rcx, rsp; StackCookie ; +0x1f8, 0x180017418 call __security_check_cookie ; +0x1fb, 0x18001741b lea r11, [rsp+88h+var_18] ; +0x200, 0x180017420 mov rbx, [r11+28h] ; +0x205, 0x180017425 mov rbp, [r11+30h] ; +0x209, 0x180017429 mov rsp, r11 ; +0x20d, 0x18001742d pop r14 ; +0x210, 0x180017430 pop rdi ; +0x212, 0x180017432 pop rsi ; +0x213, 0x180017433 retn ; +0x214, 0x180017434 call cs:?_Xbad_function_call@std@@YAXXZ; std::_Xbad_function_call(void) ; +0x215, 0x180017435 nop ; +0x21b, 0x18001743b mov dword ptr [rbx+4Ch], 7FFFFFFEh ; +0x21c, 0x18001743c mov ecx, 6 ; +0x223, 0x180017443 call cs:?_Throw_Cpp_error@std@@YAXH@Z; std::_Throw_Cpp_error(int) ; +0x228, 0x180017448 db 0CCh ; +0x22e, 0x18001744e