; ; common_stat_handle_file_opened<_stat64i32> from 0x180129214 to 0x1801293bc (424 bytes) ; ; 2 xrefs: ; > common_stat<_stat64i32> @ 0x180129152 ; > @ 0x180202a74 ; ; 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-28h+arg_8], rbx ; +0x0, 0x180129214 push rbp ; +0x5, 0x180129219 push rsi ; +0x6, 0x18012921a push rdi ; +0x7, 0x18012921b push r14 ; +0x8, 0x18012921c push r15 ; +0xa, 0x18012921e mov rbp, rsp ; +0xc, 0x180129220 sub rsp, 80h ; +0xf, 0x180129223 mov rax, cs:__security_cookie ; +0x16, 0x18012922a xor rax, rsp ; +0x1d, 0x180129231 mov [rbp+var_10], rax ; +0x20, 0x180129234 mov rdi, rcx ; +0x24, 0x180129238 mov rbx, r9 ; +0x27, 0x18012923b mov rcx, r8; hFile ; +0x2a, 0x18012923e mov rsi, r8 ; +0x2d, 0x180129241 mov r14d, edx ; +0x30, 0x180129244 call cs:GetFileType ; +0x33, 0x180129247 mov ecx, eax ; +0x39, 0x18012924d mov r15d, 1 ; +0x3b, 0x18012924f btr ecx, 0Fh ; +0x41, 0x180129255 cmp ecx, r15d ; +0x45, 0x180129259 jnz loc_18012931F ; +0x48, 0x18012925c mov [rbx+8], r15w ; +0x4e, 0x180129262 test rdi, rdi ; +0x53, 0x180129267 jz short loc_18012928E ; +0x56, 0x18012926a and [rbp+TotalBytesAvail], 0 ; +0x58, 0x18012926c lea rdx, [rbp+TotalBytesAvail]; int * ; +0x5c, 0x180129270 mov rcx, rdi; wchar_t * ; +0x60, 0x180129274 call ?get_drive_number_from_path@@YA_NQEB_WAEAH@Z ; +0x63, 0x180129277 test al, al ; +0x68, 0x18012927c jz loc_180129336 ; +0x6a, 0x18012927e mov eax, [rbp+TotalBytesAvail] ; +0x70, 0x180129284 dec eax ; +0x73, 0x180129287 mov [rbx+10h], eax ; +0x75, 0x180129289 mov [rbx], eax ; +0x78, 0x18012928c xorps xmm0, xmm0 ; +0x7a, 0x18012928e lea rdx, [rbp+FileInformation]; lpFileInformation ; +0x7d, 0x180129291 xor eax, eax ; +0x81, 0x180129295 mov rcx, rsi; hFile ; +0x83, 0x180129297 movups xmmword ptr [rbp+FileInformation.dwFileAttributes], xmm0 ; +0x86, 0x18012929a mov [rbp+FileInformation.nFileIndexLow], eax ; +0x8a, 0x18012929e movups xmmword ptr [rbp+FileInformation.ftLastAccessTime.dwHighDateTime], xmm0 ; +0x8d, 0x1801292a1 movups xmmword ptr [rbp+FileInformation.nFileSizeHigh], xmm0 ; +0x91, 0x1801292a5 call cs:GetFileInformationByHandle ; +0x95, 0x1801292a9 test eax, eax ; +0x9b, 0x1801292af jz loc_18012933A ; +0x9d, 0x1801292b1 mov ecx, [rbp+FileInformation.dwFileAttributes]; int ; +0xa3, 0x1801292b7 mov rdx, rdi; wchar_t * ; +0xa6, 0x1801292ba call ?convert_to_stat_mode@@YAGHQEB_W@Z ; +0xa9, 0x1801292bd mov rcx, qword ptr [rbp+FileInformation.ftLastWriteTime.dwLowDateTime] ; +0xae, 0x1801292c2 xor edx, edx ; +0xb2, 0x1801292c6 mov [rbx+6], ax ; +0xb4, 0x1801292c8 call ??$convert_filetime_to_time_t@_J@@YA_JU_FILETIME@@_J@Z ; +0xb8, 0x1801292cc mov rcx, qword ptr [rbp+FileInformation.ftLastAccessTime.dwLowDateTime] ; +0xbd, 0x1801292d1 mov rdx, rax ; +0xc1, 0x1801292d5 mov [rbx+20h], rax ; +0xc4, 0x1801292d8 call ??$convert_filetime_to_time_t@_J@@YA_JU_FILETIME@@_J@Z ; +0xc8, 0x1801292dc mov rdx, [rbx+20h] ; +0xcd, 0x1801292e1 mov rcx, qword ptr [rbp+FileInformation.ftCreationTime.dwLowDateTime] ; +0xd1, 0x1801292e5 mov [rbx+18h], rax ; +0xd5, 0x1801292e9 call ??$convert_filetime_to_time_t@_J@@YA_JU_FILETIME@@_J@Z ; +0xd9, 0x1801292ed mov [rbx+28h], rax ; +0xde, 0x1801292f2 and dword ptr [rbx+14h], 0 ; +0xe2, 0x1801292f6 cmp [rbp+FileInformation.nFileSizeHigh], 0 ; +0xe6, 0x1801292fa jnz short loc_180129312 ; +0xea, 0x1801292fe mov eax, [rbp+FileInformation.nFileSizeLow] ; +0xec, 0x180129300 cmp eax, 7FFFFFFFh ; +0xef, 0x180129303 ja short loc_180129312 ; +0xf4, 0x180129308 mov [rbx+14h], eax ; +0xf6, 0x18012930a jmp loc_180129396 ; +0xf9, 0x18012930d call _errno ; +0xfe, 0x180129312 mov dword ptr [rax], 84h ; +0x103, 0x180129317 jmp short loc_180129336 ; +0x109, 0x18012931d lea eax, [rcx-2] ; +0x10b, 0x18012931f cmp eax, r15d ; +0x10e, 0x180129322 jbe short loc_180129349 ; +0x111, 0x180129325 test ecx, ecx ; +0x113, 0x180129327 jnz short loc_18012933A ; +0x115, 0x180129329 call _errno ; +0x117, 0x18012932b mov dword ptr [rax], 9 ; +0x11c, 0x180129330 xor al, al ; +0x122, 0x180129336 jmp short loc_180129399 ; +0x124, 0x180129338 call cs:GetLastError ; +0x126, 0x18012933a mov ecx, eax ; +0x12c, 0x180129340 call __acrt_errno_map_os_error ; +0x12e, 0x180129342 jmp short loc_180129336 ; +0x133, 0x180129347 cmp ecx, 2 ; +0x135, 0x180129349 mov [rbx+8], r15w ; +0x138, 0x18012934c mov eax, 1000h ; +0x13d, 0x180129351 mov [rbx+10h], r14d ; +0x142, 0x180129356 mov edx, 2000h ; +0x146, 0x18012935a mov [rbx], r14d ; +0x14b, 0x18012935f cmovz ax, dx ; +0x14e, 0x180129362 mov [rbx+6], ax ; +0x152, 0x180129366 jz short loc_180129396 ; +0x156, 0x18012936a and [rsp+80h+var_58], 0 ; +0x158, 0x18012936c lea rcx, [rbp+TotalBytesAvail] ; +0x15e, 0x180129372 mov [rsp+80h+lpTotalBytesAvail], rcx; lpTotalBytesAvail ; +0x162, 0x180129376 xor r9d, r9d; lpBytesRead ; +0x167, 0x18012937b mov rcx, rsi; hNamedPipe ; +0x16a, 0x18012937e xor r8d, r8d; nBufferSize ; +0x16d, 0x180129381 xor edx, edx; lpBuffer ; +0x170, 0x180129384 call cs:PeekNamedPipe ; +0x172, 0x180129386 test eax, eax ; +0x178, 0x18012938c jz short loc_180129396 ; +0x17a, 0x18012938e mov ecx, [rbp+TotalBytesAvail] ; +0x17c, 0x180129390 mov [rbx+14h], ecx ; +0x17f, 0x180129393 mov al, r15b ; +0x182, 0x180129396 mov rcx, [rbp+var_10] ; +0x185, 0x180129399 xor rcx, rsp; StackCookie ; +0x189, 0x18012939d call __security_check_cookie ; +0x18c, 0x1801293a0 mov rbx, [rsp+80h+arg_8] ; +0x191, 0x1801293a5 add rsp, 80h ; +0x199, 0x1801293ad pop r15 ; +0x1a0, 0x1801293b4 pop r14 ; +0x1a2, 0x1801293b6 pop rdi ; +0x1a4, 0x1801293b8 pop rsi ; +0x1a5, 0x1801293b9 pop rbp ; +0x1a6, 0x1801293ba retn ; +0x1a7, 0x1801293bb