; ; strncpy from 0x180128b60 to 0x180128cc2 (354 bytes) ; ; 22 xrefs: ; > sub_180020140 @ 0x180020337 ; > sub_1800F6380 @ 0x1800f63db ; > sub_1800F6380 @ 0x1800f63f7 ; > sub_1800F6380 @ 0x1800f6458 ; > sub_1800F6380 @ 0x1800f646f ; > sub_1800F6380 @ 0x1800f64ea ; > sub_1800F6380 @ 0x1800f6501 ; > sub_1800F6380 @ 0x1800f6589 ; > sub_1800F6380 @ 0x1800f659c ; > sub_180107A40 @ 0x180107a95 ; > sub_180107A40 @ 0x180107aae ; > sub_180109650 @ 0x1801096ab ; > sub_180109650 @ 0x1801096c4 ; > sub_180109650 @ 0x18010973a ; > sub_180109650 @ 0x180109751 ; > sub_180109650 @ 0x1801097e4 ; > sub_180109650 @ 0x1801097fb ; > sub_180109650 @ 0x180109872 ; > sub_180109650 @ 0x180109889 ; > sub_180109650 @ 0x18010990e ; > sub_180109650 @ 0x180109925 ; > @ 0x180202a20 ; ; 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 r11, rcx ; +0x0, 0x180128b60 or r8, r8 ; +0x3, 0x180128b63 jz short strncpy_exit ; +0x6, 0x180128b66 sub rcx, rdx ; +0x8, 0x180128b68 test dl, 7 ; +0xb, 0x180128b6b jz short _qword_loop_entrance ; +0xe, 0x180128b6e mov al, [rdx] ; +0x10, 0x180128b70 test al, al ; +0x12, 0x180128b72 mov [rdx+rcx], al ; +0x14, 0x180128b74 jz filler ; +0x17, 0x180128b77 inc rdx ; +0x1d, 0x180128b7d dec r8 ; +0x20, 0x180128b80 jz short strncpy_exit ; +0x23, 0x180128b83 test dl, 7 ; +0x25, 0x180128b85 jnz short copy_head_loop_begin ; +0x28, 0x180128b88 jmp short _qword_loop_entrance ; +0x2a, 0x180128b8a mov rax, r11 ; +0x2c, 0x180128b8c retn ; +0x2f, 0x180128b8f mov [rdx+rcx], rax ; +0x30, 0x180128b90 add rdx, 8 ; +0x34, 0x180128b94 mov rax, [rdx] ; +0x38, 0x180128b98 sub r8, 8 ; +0x3b, 0x180128b9b jbe short _qword_loop_end ; +0x3f, 0x180128b9f mov r9, 7EFEFEFEFEFEFEFFh ; +0x41, 0x180128ba1 add r9, rax ; +0x4b, 0x180128bab mov r10, rax ; +0x4e, 0x180128bae xor r10, 0FFFFFFFFFFFFFFFFh ; +0x51, 0x180128bb1 xor r10, r9 ; +0x55, 0x180128bb5 mov r9, 8101010101010100h ; +0x58, 0x180128bb8 test r9, r10 ; +0x62, 0x180128bc2 jz short _qword_loop_begin ; +0x65, 0x180128bc5 add r8, 8 ; +0x67, 0x180128bc7 jz strncpy_exit_2 ; +0x6b, 0x180128bcb test al, al ; +0x71, 0x180128bd1 mov [rdx+rcx], al ; +0x73, 0x180128bd3 jz filler ; +0x76, 0x180128bd6 inc rdx ; +0x7c, 0x180128bdc dec r8 ; +0x7f, 0x180128bdf jz short strncpy_exit_2 ; +0x82, 0x180128be2 test ah, ah ; +0x84, 0x180128be4 mov [rdx+rcx], ah ; +0x86, 0x180128be6 jz short filler ; +0x89, 0x180128be9 inc rdx ; +0x8b, 0x180128beb dec r8 ; +0x8e, 0x180128bee jz short strncpy_exit_2 ; +0x91, 0x180128bf1 shr rax, 10h ; +0x93, 0x180128bf3 test al, al ; +0x97, 0x180128bf7 mov [rdx+rcx], al ; +0x99, 0x180128bf9 jz short filler ; +0x9c, 0x180128bfc inc rdx ; +0x9e, 0x180128bfe dec r8 ; +0xa1, 0x180128c01 jz short strncpy_exit_2 ; +0xa4, 0x180128c04 test ah, ah ; +0xa6, 0x180128c06 mov [rdx+rcx], ah ; +0xa8, 0x180128c08 jz short filler ; +0xab, 0x180128c0b inc rdx ; +0xad, 0x180128c0d dec r8 ; +0xb0, 0x180128c10 jz short strncpy_exit_2 ; +0xb3, 0x180128c13 shr rax, 10h ; +0xb5, 0x180128c15 test al, al ; +0xb9, 0x180128c19 mov [rdx+rcx], al ; +0xbb, 0x180128c1b jz short filler ; +0xbe, 0x180128c1e inc rdx ; +0xc0, 0x180128c20 dec r8 ; +0xc3, 0x180128c23 jz short strncpy_exit_2 ; +0xc6, 0x180128c26 test ah, ah ; +0xc8, 0x180128c28 mov [rdx+rcx], ah ; +0xca, 0x180128c2a jz short filler ; +0xcd, 0x180128c2d inc rdx ; +0xcf, 0x180128c2f dec r8 ; +0xd2, 0x180128c32 jz short strncpy_exit_2 ; +0xd5, 0x180128c35 shr eax, 10h ; +0xd7, 0x180128c37 test al, al ; +0xda, 0x180128c3a mov [rdx+rcx], al ; +0xdc, 0x180128c3c jz short filler ; +0xdf, 0x180128c3f inc rdx ; +0xe1, 0x180128c41 dec r8 ; +0xe4, 0x180128c44 jz short strncpy_exit_2 ; +0xe7, 0x180128c47 test ah, ah ; +0xe9, 0x180128c49 mov [rdx+rcx], ah ; +0xeb, 0x180128c4b jz short filler ; +0xee, 0x180128c4e inc rdx ; +0xf0, 0x180128c50 dec r8 ; +0xf3, 0x180128c53 jnz _qword_loop_entrance ; +0xf6, 0x180128c56 mov rax, r11 ; +0xfc, 0x180128c5c retn ; +0xff, 0x180128c5f add rcx, rdx ; +0x100, 0x180128c60 xor rdx, rdx ; +0x103, 0x180128c63 cmp r8, 10h ; +0x106, 0x180128c66 jb short tail ; +0x10a, 0x180128c6a test cl, 7 ; +0x10c, 0x180128c6c jz short aligned ; +0x10f, 0x180128c6f inc rcx ; +0x111, 0x180128c71 mov [rcx], dl ; +0x114, 0x180128c74 dec r8 ; +0x116, 0x180128c76 jmp short aligner1 ; +0x119, 0x180128c79 sub r8, 20h ; ' ' ; +0x11b, 0x180128c7b jb short tail_8_enter ; +0x11f, 0x180128c7f mov [rcx], rdx ; +0x121, 0x180128c81 mov [rcx+8], rdx ; +0x124, 0x180128c84 mov [rcx+10h], rdx ; +0x128, 0x180128c88 mov [rcx+18h], rdx ; +0x12c, 0x180128c8c add rcx, 20h ; ' ' ; +0x130, 0x180128c90 sub r8, 20h ; ' ' ; +0x134, 0x180128c94 jnb short loop32 ; +0x138, 0x180128c98 add r8, 20h ; ' ' ; +0x13a, 0x180128c9a sub r8, 8 ; +0x13e, 0x180128c9e jb short tail_enter ; +0x142, 0x180128ca2 mov [rcx], rdx ; +0x144, 0x180128ca4 add rcx, 8 ; +0x147, 0x180128ca7 jmp short tail_8_begin ; +0x14b, 0x180128cab add r8, 8 ; +0x14d, 0x180128cad sub r8, 1 ; +0x151, 0x180128cb1 jb short tail_finish ; +0x155, 0x180128cb5 mov [rcx], dl ; +0x157, 0x180128cb7 inc rcx ; +0x159, 0x180128cb9 jmp short tail ; +0x15c, 0x180128cbc mov rax, r11 ; +0x15e, 0x180128cbe retn ; +0x161, 0x180128cc1