; ; sub_180006640 from 0x180006640 to 0x180006a3e (1022 bytes) ; ; 2 xrefs: ; > sub_180007790 @ 0x1800078bf ; > @ 0x1801f6330 ; ; 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, 0x180006640 mov [rsp+arg_10], rbp ; +0x5, 0x180006645 mov [rsp+arg_18], rsi ; +0xa, 0x18000664a push rdi ; +0xf, 0x18000664f push r12 ; +0x10, 0x180006650 push r13 ; +0x12, 0x180006652 push r14 ; +0x14, 0x180006654 push r15 ; +0x16, 0x180006656 sub rsp, 20h ; +0x18, 0x180006658 mov r12, [rcx+20h] ; +0x1c, 0x18000665c xor r14d, r14d ; +0x20, 0x180006660 mov r15, rdx ; +0x23, 0x180006663 mov [rsp+48h+arg_0], r14d ; +0x26, 0x180006666 mov edi, r14d ; +0x2b, 0x18000666b lea ebx, [r14-1] ; +0x2e, 0x18000666e lea edx, [rbx+41h] ; +0x32, 0x180006672 lea ecx, [rbx+2] ; +0x35, 0x180006675 call sub_180018290 ; +0x38, 0x180006678 lea edx, [rbx+6] ; +0x3d, 0x18000667d mov rcx, r15 ; +0x40, 0x180006680 mov rsi, rax ; +0x43, 0x180006683 call sub_180001340 ; +0x46, 0x180006686 mov ecx, eax ; +0x4b, 0x18000668b mov [rsi+30h], eax ; +0x4d, 0x18000668d call sub_1800182F0 ; +0x50, 0x180006690 mov ebp, r14d ; +0x55, 0x180006695 mov [rsi+8], rax ; +0x58, 0x180006698 cmp [rsi+30h], r14d ; +0x5c, 0x18000669c jle loc_1800067F7 ; +0x60, 0x1800066a0 nop word ptr [rax+rax+00000000h] ; +0x66, 0x1800066a6 mov edi, ebx ; +0x70, 0x1800066b0 mov edx, 4 ; +0x72, 0x1800066b2 mov rcx, r15 ; +0x77, 0x1800066b7 movsxd rbx, ebp ; +0x7a, 0x1800066ba call sub_180001340 ; +0x7d, 0x1800066bd mov rcx, [rsi+8] ; +0x82, 0x1800066c2 mov [rbx+rcx], al ; +0x86, 0x1800066c6 mov rax, [rsi+8] ; +0x89, 0x1800066c9 movsx ebx, byte ptr [rbx+rax] ; +0x8d, 0x1800066cd cmp edi, ebx ; +0x91, 0x1800066d1 cmovge ebx, edi ; +0x93, 0x1800066d3 inc ebp ; +0x96, 0x1800066d6 cmp ebp, [rsi+30h] ; +0x98, 0x1800066d8 jl short loc_1800066B0 ; +0x9b, 0x1800066db lea eax, [rbx+1] ; +0x9d, 0x1800066dd imul ecx, eax, 0Bh ; +0xa0, 0x1800066e0 call sub_1800182F0 ; +0xa3, 0x1800066e3 lea r13d, [rbx+1] ; +0xa8, 0x1800066e8 mov [rsi], rax ; +0xac, 0x1800066ec mov ebp, r14d ; +0xaf, 0x1800066ef test r13d, r13d ; +0xb2, 0x1800066f2 jle loc_180006803 ; +0xb5, 0x1800066f5 nop dword ptr [rax+rax+00h] ; +0xbb, 0x1800066fb mov edx, 3 ; +0xc0, 0x180006700 mov rcx, r15 ; +0xc5, 0x180006705 call sub_180001340 ; +0xc8, 0x180006708 movsxd rcx, ebp ; +0xcd, 0x18000670d inc al ; +0xd0, 0x180006710 imul r14, rcx, 0Bh ; +0xd2, 0x180006712 mov rcx, [rsi] ; +0xd6, 0x180006716 mov edx, 2 ; +0xd9, 0x180006719 mov [r14+rcx], al ; +0xde, 0x18000671e mov rcx, r15 ; +0xe2, 0x180006722 call sub_180001340 ; +0xe5, 0x180006725 mov rcx, [rsi] ; +0xea, 0x18000672a mov [r14+rcx+1], al ; +0xed, 0x18000672d mov rcx, r15 ; +0xf2, 0x180006732 call sub_180001310 ; +0xf5, 0x180006735 test eax, eax ; +0xfa, 0x18000673a js loc_180006923 ; +0xfc, 0x18000673c mov rcx, [rsi] ; +0x102, 0x180006742 cmp byte ptr [rcx+r14+1], 0 ; +0x105, 0x180006745 jz short loc_180006764 ; +0x10b, 0x18000674b mov edx, 8 ; +0x10d, 0x18000674d mov rcx, r15 ; +0x112, 0x180006752 call sub_180001340 ; +0x115, 0x180006755 mov rcx, [rsi] ; +0x11a, 0x18000675a mov [r14+rcx+2], al ; +0x11d, 0x18000675d jmp short loc_18000676A ; +0x122, 0x180006762 mov byte ptr [rcx+r14+2], 0 ; +0x124, 0x180006764 mov rcx, [rsi] ; +0x12a, 0x18000676a movzx eax, byte ptr [rcx+r14+2] ; +0x12d, 0x18000676d cmp eax, [r12+18h] ; +0x133, 0x180006773 jge loc_180006923 ; +0x138, 0x180006778 movzx ecx, byte ptr [rcx+r14+1] ; +0x13e, 0x18000677e mov eax, 1 ; +0x144, 0x180006784 shl eax, cl ; +0x149, 0x180006789 xor edi, edi ; +0x14b, 0x18000678b test eax, eax ; +0x14d, 0x18000678d jle short loc_1800067E3 ; +0x14f, 0x18000678f mov rbx, r14 ; +0x151, 0x180006791 nop dword ptr [rax+00h] ; +0x154, 0x180006794 nop dword ptr [rax+rax+00000000h] ; +0x158, 0x180006798 mov edx, 8 ; +0x160, 0x1800067a0 mov rcx, r15 ; +0x165, 0x1800067a5 call sub_180001340 ; +0x168, 0x1800067a8 mov rcx, [rsi] ; +0x16d, 0x1800067ad dec al ; +0x170, 0x1800067b0 mov [rcx+rbx+3], al ; +0x172, 0x1800067b2 mov rcx, [rsi] ; +0x176, 0x1800067b6 movzx eax, byte ptr [rcx+rbx+3] ; +0x179, 0x1800067b9 cmp eax, [r12+18h] ; +0x17e, 0x1800067be jl short loc_1800067CD ; +0x183, 0x1800067c3 cmp al, 0FFh ; +0x185, 0x1800067c5 jnz loc_180006923 ; +0x187, 0x1800067c7 movzx ecx, byte ptr [r14+rcx+1] ; +0x18d, 0x1800067cd mov eax, 1 ; +0x193, 0x1800067d3 shl eax, cl ; +0x198, 0x1800067d8 inc edi ; +0x19a, 0x1800067da inc rbx ; +0x19c, 0x1800067dc cmp edi, eax ; +0x19f, 0x1800067df jl short loc_1800067A0 ; +0x1a1, 0x1800067e1 inc ebp ; +0x1a3, 0x1800067e3 cmp ebp, r13d ; +0x1a5, 0x1800067e5 jl loc_180006700 ; +0x1a8, 0x1800067e8 mov edi, [rsp+48h+arg_0] ; +0x1ae, 0x1800067ee xor r14d, r14d ; +0x1b2, 0x1800067f2 jmp short loc_180006805 ; +0x1b5, 0x1800067f5 xor ecx, ecx ; +0x1b7, 0x1800067f7 call sub_1800182F0 ; +0x1b9, 0x1800067f9 mov [rsi], rax ; +0x1be, 0x1800067fe jmp short loc_180006805 ; +0x1c1, 0x180006801 mov edi, ebp ; +0x1c3, 0x180006803 mov edx, 2 ; +0x1c5, 0x180006805 mov rcx, r15 ; +0x1ca, 0x18000680a call sub_180001340 ; +0x1cd, 0x18000680d inc eax ; +0x1d2, 0x180006812 mov edx, 4 ; +0x1d4, 0x180006814 mov rcx, r15 ; +0x1d9, 0x180006819 mov [rsi+38h], eax ; +0x1dc, 0x18000681c call sub_180001340 ; +0x1df, 0x18000681f mov ecx, [rsi+30h] ; +0x1e4, 0x180006824 mov r13d, eax ; +0x1e7, 0x180006827 test ecx, ecx ; +0x1ea, 0x18000682a jle short loc_180006858 ; +0x1ec, 0x18000682c mov rax, [rsi] ; +0x1ee, 0x18000682e mov r9d, ecx ; +0x1f1, 0x180006831 mov r8, [rsi+8] ; +0x1f4, 0x180006834 nop dword ptr [rax+rax+00000000h] ; +0x1f8, 0x180006838 movsx rcx, byte ptr [r8] ; +0x200, 0x180006840 lea r8, [r8+1] ; +0x204, 0x180006844 imul rdx, rcx, 0Bh ; +0x208, 0x180006848 movsx ecx, byte ptr [rdx+rax] ; +0x20c, 0x18000684c add edi, ecx ; +0x210, 0x180006850 sub r9, 1 ; +0x212, 0x180006852 jnz short loc_180006840 ; +0x216, 0x180006856 lea ebx, [rdi+2] ; +0x218, 0x180006858 lea ecx, [rbx+rbx] ; +0x21b, 0x18000685b call sub_1800182F0 ; +0x21e, 0x18000685e mov ecx, ebx ; +0x223, 0x180006863 mov [rsi+10h], rax ; +0x225, 0x180006865 call sub_1800182F0 ; +0x229, 0x180006869 mov ecx, edi ; +0x22e, 0x18000686e mov [rsi+18h], rax ; +0x230, 0x180006870 call sub_1800182F0 ; +0x234, 0x180006874 mov ecx, edi ; +0x239, 0x180006879 mov [rsi+28h], rax ; +0x23b, 0x18000687b call sub_1800182F0 ; +0x23f, 0x18000687f cmp dword ptr [rsi+30h], 0 ; +0x244, 0x180006884 mov edi, r14d ; +0x248, 0x180006888 mov [rsi+20h], rax ; +0x24b, 0x18000688b mov r12d, r14d ; +0x24f, 0x18000688f jle loc_180006917 ; +0x252, 0x180006892 mov rbx, r14 ; +0x258, 0x180006898 nop dword ptr [rax+rax+00h] ; +0x25b, 0x18000689b mov rax, [rsi+8] ; +0x260, 0x1800068a0 movsxd rcx, r12d ; +0x264, 0x1800068a4 movsx rcx, byte ptr [rcx+rax] ; +0x267, 0x1800068a7 mov rax, [rsi] ; +0x26c, 0x1800068ac imul rdx, rcx, 0Bh ; +0x26f, 0x1800068af movsx ecx, byte ptr [rdx+rax] ; +0x273, 0x1800068b3 add edi, ecx ; +0x277, 0x1800068b7 movsxd rbp, edi ; +0x279, 0x1800068b9 mov [rsp+48h+arg_0], edi ; +0x27c, 0x1800068bc cmp rbx, rbp ; +0x280, 0x1800068c0 jge short loc_18000690B ; +0x283, 0x1800068c3 mov ecx, r13d ; +0x285, 0x1800068c5 lea rdi, ds:4[rbx*2] ; +0x288, 0x1800068c8 mov r14d, 1 ; +0x290, 0x1800068d0 rol r14d, cl ; +0x296, 0x1800068d6 nop dword ptr [rax+00000000h] ; +0x299, 0x1800068d9 mov edx, r13d ; +0x2a0, 0x1800068e0 mov rcx, r15 ; +0x2a3, 0x1800068e3 call sub_180001340 ; +0x2a6, 0x1800068e6 movzx ecx, ax ; +0x2ab, 0x1800068eb mov rax, [rsi+10h] ; +0x2ae, 0x1800068ee mov [rdi+rax], cx ; +0x2b2, 0x1800068f2 cmp ecx, r14d ; +0x2b6, 0x1800068f6 jge short loc_180006923 ; +0x2b9, 0x1800068f9 inc rbx ; +0x2bb, 0x1800068fb add rdi, 2 ; +0x2be, 0x1800068fe cmp rbx, rbp ; +0x2c2, 0x180006902 jl short loc_1800068E0 ; +0x2c5, 0x180006905 mov edi, [rsp+48h+arg_0] ; +0x2c7, 0x180006907 inc r12d ; +0x2cb, 0x18000690b cmp r12d, [rsi+30h] ; +0x2ce, 0x18000690e jl short loc_1800068A0 ; +0x2d2, 0x180006912 xor r14d, r14d ; +0x2d4, 0x180006914 mov rcx, r15 ; +0x2d7, 0x180006917 call sub_180001310 ; +0x2da, 0x18000691a test eax, eax ; +0x2df, 0x18000691f jz short loc_18000692A ; +0x2e1, 0x180006921 xor eax, eax ; +0x2e3, 0x180006923 jmp loc_180006A21 ; +0x2e5, 0x180006925 mov rax, [rsi+10h] ; +0x2ea, 0x18000692a mov edx, 1 ; +0x2ee, 0x18000692e mov ecx, r13d ; +0x2f3, 0x180006933 shl dx, cl ; +0x2f6, 0x180006936 mov [rax], r14w ; +0x2f9, 0x180006939 mov rax, [rsi+10h] ; +0x2fd, 0x18000693d mov [rax+2], dx ; +0x301, 0x180006941 lea eax, [rdi+2] ; +0x305, 0x180006945 mov [rsi+34h], eax ; +0x308, 0x180006948 mov edx, r14d ; +0x30b, 0x18000694b test eax, eax ; +0x30e, 0x18000694e jle short loc_180006973 ; +0x310, 0x180006950 nop dword ptr [rax+00h] ; +0x312, 0x180006952 nop word ptr [rax+rax+00000000h] ; +0x316, 0x180006956 mov rax, [rsi+18h] ; +0x320, 0x180006960 movsxd rcx, edx ; +0x324, 0x180006964 mov [rcx+rax], dl ; +0x327, 0x180006967 inc edx ; +0x32a, 0x18000696a mov eax, [rsi+34h] ; +0x32c, 0x18000696c cmp edx, eax ; +0x32f, 0x18000696f jl short loc_180006960 ; +0x331, 0x180006971 mov rdx, [rsi+10h] ; +0x333, 0x180006973 movzx r8d, ax ; +0x337, 0x180006977 mov rcx, [rsi+18h] ; +0x33b, 0x18000697b call sub_180006ED0 ; +0x33f, 0x18000697f mov eax, [rsi+34h] ; +0x344, 0x180006984 mov ebp, r14d ; +0x347, 0x180006987 sub eax, 2 ; +0x34a, 0x18000698a test eax, eax ; +0x34d, 0x18000698d jle loc_180006A1E ; +0x34f, 0x18000698f nop word ptr [rax+rax+00000000h] ; +0x355, 0x180006995 mov rdx, [rsi+10h] ; +0x360, 0x1800069a0 lea r11d, [rbp+2] ; +0x364, 0x1800069a4 xor eax, eax ; +0x368, 0x1800069a8 mov ebx, r14d ; +0x36a, 0x1800069aa mov r8d, r14d ; +0x36d, 0x1800069ad movsxd r14, ebp ; +0x370, 0x1800069b0 mov edi, 1 ; +0x373, 0x1800069b3 mov ecx, eax ; +0x378, 0x1800069b8 movzx r9d, word ptr [rdx+2] ; +0x37a, 0x1800069ba movzx r10d, word ptr [rdx+r14*2+4] ; +0x37f, 0x1800069bf test r11d, r11d ; +0x385, 0x1800069c5 jle short loc_1800069FC ; +0x388, 0x1800069c8 nop word ptr [rax+rax+00h] ; +0x38a, 0x1800069ca movzx eax, word ptr [rdx] ; +0x390, 0x1800069d0 cmp eax, r8d ; +0x393, 0x1800069d3 jle short loc_1800069E2 ; +0x396, 0x1800069d6 cmp eax, r10d ; +0x398, 0x1800069d8 jnb short loc_1800069E2 ; +0x39b, 0x1800069db mov ebx, ecx ; +0x39d, 0x1800069dd mov r8d, eax ; +0x39f, 0x1800069df cmp eax, r9d ; +0x3a2, 0x1800069e2 jge short loc_1800069F1 ; +0x3a5, 0x1800069e5 cmp eax, r10d ; +0x3a7, 0x1800069e7 jbe short loc_1800069F1 ; +0x3aa, 0x1800069ea mov edi, ecx ; +0x3ac, 0x1800069ec mov r9d, eax ; +0x3ae, 0x1800069ee inc ecx ; +0x3b1, 0x1800069f1 add rdx, 2 ; +0x3b3, 0x1800069f3 cmp ecx, r11d ; +0x3b7, 0x1800069f7 jl short loc_1800069D0 ; +0x3ba, 0x1800069fa mov rax, [rsi+28h] ; +0x3bc, 0x1800069fc inc ebp ; +0x3c0, 0x180006a00 mov [r14+rax], bl ; +0x3c2, 0x180006a02 mov rax, [rsi+20h] ; +0x3c6, 0x180006a06 mov [r14+rax], dil ; +0x3ca, 0x180006a0a mov r14d, 0 ; +0x3ce, 0x180006a0e mov eax, [rsi+34h] ; +0x3d4, 0x180006a14 sub eax, 2 ; +0x3d7, 0x180006a17 cmp ebp, eax ; +0x3da, 0x180006a1a jl short loc_1800069A0 ; +0x3dc, 0x180006a1c mov rax, rsi ; +0x3de, 0x180006a1e mov rbx, [rsp+48h+arg_8] ; +0x3e1, 0x180006a21 mov rbp, [rsp+48h+arg_10] ; +0x3e6, 0x180006a26 mov rsi, [rsp+48h+arg_18] ; +0x3eb, 0x180006a2b add rsp, 20h ; +0x3f0, 0x180006a30 pop r15 ; +0x3f4, 0x180006a34 pop r14 ; +0x3f6, 0x180006a36 pop r13 ; +0x3f8, 0x180006a38 pop r12 ; +0x3fa, 0x180006a3a pop rdi ; +0x3fc, 0x180006a3c retn ; +0x3fd, 0x180006a3d