; ; copy_and_add_argument_to_buffer from 0x180139c4c to 0x180139dd3 (391 bytes) ; ; 5 xrefs: ; > common_expand_argv_wildcards @ 0x180139aba ; > _wsetlocale_set_cat @ 0x180139e58 ; > _wsetlocale_set_cat @ 0x180139f54 ; > _wsetlocale_set_cat @ 0x18013a02a ; > @ 0x180203818 ; ; 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_0], rbx ; +0x0, 0x180139c4c mov [rsp+arg_8], rbp ; +0x5, 0x180139c51 mov [rsp+arg_10], rsi ; +0xa, 0x180139c56 push rdi ; +0xf, 0x180139c5b push r12 ; +0x10, 0x180139c5c push r13 ; +0x12, 0x180139c5e push r14 ; +0x14, 0x180139c60 push r15 ; +0x16, 0x180139c62 sub rsp, 30h ; +0x18, 0x180139c64 or rbp, 0FFFFFFFFFFFFFFFFh ; +0x1c, 0x180139c68 mov rdi, r9 ; +0x20, 0x180139c6c xor esi, esi ; +0x23, 0x180139c6f mov r14, r8 ; +0x25, 0x180139c71 mov r13, rdx ; +0x28, 0x180139c74 mov r12, rcx ; +0x2b, 0x180139c77 inc rbp ; +0x2e, 0x180139c7a cmp [rcx+rbp], sil ; +0x31, 0x180139c7d jnz short loc_180139C7A ; +0x35, 0x180139c81 mov edx, 1; Size ; +0x37, 0x180139c83 mov rax, r14 ; +0x3c, 0x180139c88 add rbp, rdx ; +0x3f, 0x180139c8b not rax ; +0x42, 0x180139c8e cmp rbp, rax ; +0x45, 0x180139c91 jbe short loc_180139CB6 ; +0x48, 0x180139c94 lea eax, [rdx+0Bh] ; +0x4a, 0x180139c96 mov rbx, [rsp+58h+arg_0] ; +0x4d, 0x180139c99 mov rbp, [rsp+58h+arg_8] ; +0x52, 0x180139c9e mov rsi, [rsp+58h+arg_10] ; +0x57, 0x180139ca3 add rsp, 30h ; +0x5c, 0x180139ca8 pop r15 ; +0x60, 0x180139cac pop r14 ; +0x62, 0x180139cae pop r13 ; +0x64, 0x180139cb0 pop r12 ; +0x66, 0x180139cb2 pop rdi ; +0x68, 0x180139cb4 retn ; +0x69, 0x180139cb5 lea r15, [r8+1] ; +0x6a, 0x180139cb6 add r15, rbp ; +0x6e, 0x180139cba mov rcx, r15; Count ; +0x71, 0x180139cbd call _calloc_base ; +0x74, 0x180139cc0 mov rbx, rax ; +0x79, 0x180139cc5 test r14, r14 ; +0x7c, 0x180139cc8 jz short loc_180139CE6 ; +0x7f, 0x180139ccb mov r9, r14; MaxCount ; +0x81, 0x180139ccd mov r8, r13; Source ; +0x84, 0x180139cd0 mov rdx, r15; SizeInBytes ; +0x87, 0x180139cd3 mov rcx, rax; Destination ; +0x8a, 0x180139cd6 call strncpy_s ; +0x8d, 0x180139cd9 test eax, eax ; +0x92, 0x180139cde jnz loc_180139DBE ; +0x94, 0x180139ce0 sub r15, r14 ; +0x9a, 0x180139ce6 lea rcx, [rbx+r14]; Destination ; +0x9d, 0x180139ce9 mov rdx, r15; SizeInBytes ; +0xa1, 0x180139ced mov r9, rbp; MaxCount ; +0xa4, 0x180139cf0 mov r8, r12; Source ; +0xa7, 0x180139cf3 call strncpy_s ; +0xaa, 0x180139cf6 test eax, eax ; +0xaf, 0x180139cfb jnz loc_180139DBE ; +0xb1, 0x180139cfd mov rcx, [rdi+8] ; +0xb7, 0x180139d03 lea r15d, [rax+8] ; +0xbb, 0x180139d07 mov r14, [rdi+10h] ; +0xbf, 0x180139d0b cmp rcx, r14 ; +0xc3, 0x180139d0f jnz loc_180139DB5 ; +0xc6, 0x180139d12 cmp [rdi], rsi ; +0xcc, 0x180139d18 jnz short loc_180139D48 ; +0xcf, 0x180139d1b mov edx, r15d; Size ; +0xd1, 0x180139d1d lea ecx, [rax+4]; Count ; +0xd4, 0x180139d20 call _calloc_base ; +0xd7, 0x180139d23 xor ecx, ecx; Block ; +0xdc, 0x180139d28 mov [rdi], rax ; +0xde, 0x180139d2a call _free_base ; +0xe1, 0x180139d2d mov rcx, [rdi] ; +0xe6, 0x180139d32 test rcx, rcx ; +0xe9, 0x180139d35 jz short loc_180139D7C ; +0xec, 0x180139d38 lea rax, [rcx+20h] ; +0xee, 0x180139d3a mov [rdi+8], rcx ; +0xf2, 0x180139d3e mov [rdi+10h], rax ; +0xf6, 0x180139d42 jmp short loc_180139DB5 ; +0xfa, 0x180139d46 sub r14, [rdi] ; +0xfc, 0x180139d48 mov rax, 7FFFFFFFFFFFFFFFh ; +0xff, 0x180139d4b sar r14, 3 ; +0x109, 0x180139d55 cmp r14, rax ; +0x10d, 0x180139d59 ja short loc_180139D7C ; +0x110, 0x180139d5c mov rcx, [rdi]; Block ; +0x112, 0x180139d5e lea rbp, [r14+r14] ; +0x115, 0x180139d61 mov rdx, rbp; Count ; +0x119, 0x180139d65 mov r8, r15; Size ; +0x11c, 0x180139d68 call _recalloc_base ; +0x11f, 0x180139d6b test rax, rax ; +0x124, 0x180139d70 jnz short loc_180139D97 ; +0x127, 0x180139d73 xor ecx, ecx; Block ; +0x129, 0x180139d75 call _free_base ; +0x12b, 0x180139d77 mov rcx, rbx; Block ; +0x130, 0x180139d7c call _free_base ; +0x133, 0x180139d7f mov esi, 0Ch ; +0x138, 0x180139d84 xor ecx, ecx; Block ; +0x13d, 0x180139d89 call _free_base ; +0x13f, 0x180139d8b mov eax, esi ; +0x144, 0x180139d90 jmp loc_180139C99 ; +0x146, 0x180139d92 lea rcx, [rax+r14*8] ; +0x14b, 0x180139d97 mov [rdi], rax ; +0x14f, 0x180139d9b mov [rdi+8], rcx ; +0x152, 0x180139d9e lea rcx, [rax+rbp*8] ; +0x156, 0x180139da2 mov [rdi+10h], rcx ; +0x15a, 0x180139da6 xor ecx, ecx; Block ; +0x15e, 0x180139daa call _free_base ; +0x160, 0x180139dac mov rcx, [rdi+8] ; +0x165, 0x180139db1 mov [rcx], rbx ; +0x169, 0x180139db5 add [rdi+8], r15 ; +0x16c, 0x180139db8 jmp short loc_180139D89 ; +0x170, 0x180139dbc xor r9d, r9d; LineNo ; +0x172, 0x180139dbe mov [rsp+58h+Reserved], rsi; Reserved ; +0x175, 0x180139dc1 xor r8d, r8d; FileName ; +0x17a, 0x180139dc6 xor edx, edx; FunctionName ; +0x17d, 0x180139dc9 xor ecx, ecx; Expression ; +0x17f, 0x180139dcb call _invoke_watson ; +0x181, 0x180139dcd db 0CCh ; +0x186, 0x180139dd2