Function at 0x4b39e0
Capabilities:
Check if file exists
Copy file
Create directory
Get file attributes
Move file
Read file on windows
Write file on windows

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x58
push esi
push edi
mov edi, dword [ebp + 8]
add edi, 0xffffff28
mov eax, dword [edi + 0x3c]
dec eax
cmp eax, 0x1d
ja case.default.0x4b3a01
jmp dword [eax*4 + 0x4b416c]
mov ecx, edi
call fcn.004b21f0
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov eax, dword [edi + 0xf4]
cmp eax, 0xffffffff
je 0x4b3a3b
cmp eax, 2
jle 0x4b3a30
push eax
call fcn.004cff6b
add esp, 4
jmp 0x4b3a32
xor eax, eax
cmp eax, 0xffffffff
jne case.0x4b3a01.26
mov dword [edi + 0x48], 0xfffff00d
mov dword [edi + 0xf0], 6
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov ecx, edi
call fcn.004b24b0
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov ecx, dword [edi + 0xf4]
mov eax, dword [edi + 0x110]
mov esi, dword [edi + 0x114]
mov dword [esp + 0x14], eax
mov dword [esp + 0x1c], esi
cmp ecx, 0xffffffff
je 0x4b3a3b
xorps xmm0, xmm0
mov dword [esp + 0x24], 0
push ecx
movlpd qword [esp + 0x34], xmm0
call fcn.004cefb4
mov ecx, eax
add esp, 4
mov dword [esp + 0x28], ecx
cmp ecx, 0xffffffff
jne 0x4b3ac0
mov ecx, 6
mov dword [edi + 0xf0], 6
call fcn.004b8970
mov dword [edi + 0x48], eax
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov edx, dword [esp + 0x14]
mov eax, edx
and eax, esi
cmp eax, 0xffffffff
je 0x4b3b0d
lea eax, [esp + 0x40]
mov dword [esp + 0x50], 0
push 1
mov dword [esp + 0x24], eax
xorps xmm0, xmm0
lea eax, [esp + 0x3c]
movaps xmmword [esp + 0x44], xmm0
push eax
push dword [esp + 0x3c]
push dword [esp + 0x3c]
push ecx
call dword [sym.imp.KERNEL32.dll_SetFilePointerEx]
mov edx, dword [esp + 0x14]
test eax, eax
je 0x4b3b15
mov dword [esp + 0x24], 1
jmp 0x4b3b15
mov dword [esp + 0x20], 0
xor esi, esi
xor ecx, ecx
mov dword [esp + 0x18], ecx
nop dword [eax]
mov eax, edx
and eax, dword [esp + 0x1c]
cmp eax, 0xffffffff
je 0x4b3b3d
mov eax, ecx
xor ecx, ecx
add eax, edx
mov dword [esp + 0x48], eax
adc ecx, dword [esp + 0x1c]
mov dword [esp + 0x4c], ecx
push dword [esp + 0x20]
mov eax, dword [edi + 0x10c]
lea ecx, [esp + 0x30]
push ecx
push dword [eax + esi*8]
push dword [eax + esi*8 + 4]
push dword [esp + 0x38]
call dword [sym.imp.KERNEL32.dll_WriteFile]
mov ecx, dword [esp + 0x18]
inc esi
add ecx, dword [esp + 0x2c]
mov dword [esp + 0x30], eax
mov dword [esp + 0x18], ecx
test eax, eax
je 0x4b3b7e
mov edx, dword [esp + 0x14]
cmp esi, dword [edi + 0x108]
jb 0x4b3b20
cmp dword [esp + 0x24], 0
je 0x4b3ba3
push 0
push 0
push dword [esp + 0x44]
push dword [esp + 0x44]
push dword [esp + 0x38]
call dword [sym.imp.KERNEL32.dll_SetFilePointerEx]
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x30]
test eax, eax
jne 0x4b3bab
test ecx, ecx
je 0x4b3c11
mov dword [edi + 0x48], ecx
cmp ecx, 0xffffffff
jne case.default.0x4b3a01
call fcn.004ceb49
mov ecx, dword [eax]
mov dword [edi + 0xf0], ecx
call fcn.004b8970
mov dword [edi + 0x48], eax
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov eax, dword [edi + 0x100]
test al, 4
je 0x4b3bf3
mov dword [edi + 0x48], 0xfffff02a
mov dword [edi + 0xf0], 0x32
pop edi
pop esi
mov esp, ebp
pop ebp
ret
and eax, 1
push eax
push dword [edi + 0xfc]
push dword [edi + 0xf4]
call dword [sym.imp.KERNEL32.dll_CopyFileW]
test eax, eax
jne case.0x4b3a01.26
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, eax
mov dword [edi + 0xf0], eax
call fcn.004b8970
mov dword [edi + 0x48], eax
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov eax, dword [edi + 0xf4]
mov ecx, 0x10000
mov esi, dword [edi + 0x118]
cmp esi, ecx
mov dword [esp + 0x24], eax
mov eax, dword [edi + 0x104]
cmovb ecx, esi
mov dword [esp + 0x20], eax
mov eax, dword [edi + 0x110]
mov dword [esp + 0x30], eax
mov eax, dword [edi + 0x114]
mov dword [esp + 0x28], eax
xor eax, eax
push ecx
mov dword [esp + 0x30], ecx
mov dword [esp + 0x18], eax
call dword [0x53d638]
mov edx, eax
add esp, 4
mov dword [esp + 0x18], edx
test edx, edx
je 0x4b415c
mov ecx, dword [esp + 0x30]
mov eax, ecx
and eax, dword [esp + 0x28]
cmp eax, 0xffffffff
je 0x4b3cb4
push 0
push dword [esp + 0x2c]
push ecx
push dword [esp + 0x30]
call fcn.004cf49b
and eax, edx
add esp, 0x10
cmp eax, 0xffffffff
je 0x4b3d06
mov edx, dword [esp + 0x18]
test esi, esi
je 0x4b3d0d
jmp 0x4b3cc4
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x2c]
cmp esi, eax
cmovb eax, esi
push eax
push edx
push dword [esp + 0x2c]
call fcn.004cfa2d
add esp, 0xc
test eax, eax
je 0x4b3d0d
cmp eax, 0xffffffff
je 0x4b3d06
push eax
push dword [esp + 0x1c]
sub esi, eax
push dword [esp + 0x28]
call fcn.004d0641
add esp, 0xc
cmp eax, 0xffffffff
je 0x4b3d06
add dword [esp + 0x14], eax
test esi, esi
jne 0x4b3cc0
jmp 0x4b3d0d
or eax, 0xffffffff
mov dword [esp + 0x14], eax
call fcn.004ceb5c
push dword [esp + 0x18]
mov esi, dword [eax]
call dword [0x53d644]
add esp, 4
call fcn.004ceb5c
mov dword [eax], esi
mov eax, dword [esp + 0x14]
cmp eax, 0xffffffff
mov dword [edi + 0x48], eax
jmp 0x4b3bb1
mov edx, dword [edi + 0xf4]
mov ecx, edx
lea esi, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4b3d42
sub ecx, esi
sar ecx, 1
cmp ecx, 1
jbe 0x4b3d74
cmp word [edx + ecx*2 - 4], 0x3a
je 0x4b3d74
movzx eax, word [edx + ecx*2 - 2]
cmp eax, 0x5c
je 0x4b3d6d
cmp eax, 0x2f
jne 0x4b3d74
xor eax, eax
mov word [edx + ecx*2 - 2], ax
xor edx, edx
mov ecx, edi
call fcn.004b3130
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov edx, dword [edi + 0xf4]
mov ecx, edx
lea esi, [ecx + 2]
nop
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4b3d90
sub ecx, esi
sar ecx, 1
cmp ecx, 1
jbe 0x4b3dc2
cmp word [edx + ecx*2 - 4], 0x3a
je 0x4b3dc2
movzx eax, word [edx + ecx*2 - 2]
cmp eax, 0x5c
je 0x4b3dbb
cmp eax, 0x2f
jne 0x4b3dc2
xor eax, eax
mov word [edx + ecx*2 - 2], ax
mov edx, 1
mov ecx, edi
call fcn.004b3130
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov eax, dword [edi + 0xf4]
cmp eax, 0xffffffff
je 0x4b3a3b
push eax
call fcn.004cefb4
add esp, 4
cmp eax, 0xffffffff
je 0x4b3aa3
lea esi, [edi + 0x58]
mov ecx, eax
push 0
mov edx, esi
call fcn.004b2e30
add esp, 4
test eax, eax
jne 0x4b3c11
mov dword [edi + 0x4c], esi
mov dword [edi + 0x48], 0
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov eax, dword [edi + 0xf4]
cmp eax, 0xffffffff
je 0x4b3a3b
push eax
call fcn.004cefb4
mov ecx, dword [edi + 0x110]
add esp, 4
mov dword [esp + 0x38], ecx
mov ecx, dword [edi + 0x114]
mov dword [esp + 0x3c], ecx
lea ecx, [esp + 0x38]
push 0x14
push 8
push ecx
lea ecx, [esp + 0x3c]
push ecx
push eax
call dword [0x545d34]
test eax, eax
jns case.0x4b3a01.26
push eax
call dword [0x545d44]
mov ecx, eax
mov dword [edi + 0xf0], eax
call fcn.004b8970
mov dword [edi + 0x48], eax
pop edi
pop esi
mov esp, ebp
pop ebp
ret
push 0
push 0x2000000
push 3
push 0
push 7
push 0x100
push dword [edi + 0xf4]
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov esi, eax
cmp esi, 0xffffffff
je 0x4b3c11
movsd xmm0, qword [edi + 0xf8]
mulsd xmm0, qword [0x5354b0]
call fcn.0051a820
movsd xmm0, qword [edi + 0x100]
add eax, 0xd53e8000
mulsd xmm0, qword [0x5354b0]
adc edx, 0x19db1de
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], edx
call fcn.0051a820
add eax, 0xd53e8000
mov dword [esp + 0x38], eax
lea eax, [esp + 0x38]
push eax
lea eax, [esp + 0x34]
adc edx, 0x19db1de
push eax
push 0
push esi
mov dword [esp + 0x4c], edx
call dword [sym.imp.KERNEL32.dll_SetFileTime]
test eax, eax
jne 0x4b3f33
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, eax
mov dword [edi + 0xf0], eax
call fcn.004b8970
push esi
mov dword [edi + 0x48], eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
pop edi
pop esi
mov esp, ebp
pop ebp
ret
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [edi + 0x48], 0
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov eax, dword [edi + 0xf4]
cmp eax, 0xffffffff
je 0x4b3a3b
push eax
call fcn.004cefb4
add esp, 4
cmp eax, 0xffffffff
je 0x4b3aa3
movsd xmm2, qword [edi + 0x100]
mov ecx, eax
movsd xmm1, qword [edi + 0xf8]
call fcn.004b3400
test eax, eax
je case.0x4b3a01.26
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, eax
mov dword [edi + 0xf0], eax
call fcn.004b8970
mov dword [edi + 0x48], eax
pop edi
pop esi
mov esp, ebp
pop ebp
ret
push dword [edi + 0xf4]
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x4b3c11
test byte [edi + 0xf8], 2
je case.0x4b3a01.26
and al, 0x11
cmp al, 1
jne case.0x4b3a01.26
mov ecx, 0xfffff030
mov dword [edi + 0xf0], 0xfffff030
call fcn.004b8970
mov dword [edi + 0x48], eax
pop edi
pop esi
mov esp, ebp
pop ebp
ret
push dword [edi + 0xf8]
push dword [edi + 0xf4]
call fcn.004d0cd6
add esp, 8
mov dword [edi + 0x48], eax
cmp eax, 0xffffffff
jmp 0x4b3bb1
mov ecx, edi
call fcn.004b3280
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov ecx, edi
call fcn.004b3200
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov ecx, edi
call fcn.004b2660
pop edi
pop esi
mov esp, ebp
pop ebp
ret
push dword [edi + 0xf4]
call fcn.004cf4fb
add esp, 4
mov dword [edi + 0x48], eax
cmp eax, 0xffffffff
jmp 0x4b3bb1
push dword [edi + 0xf4]
call fcn.004cf4d1
add esp, 4
mov dword [edi + 0x48], eax
cmp eax, 0xffffffff
jmp 0x4b3bb1
mov ecx, edi
call fcn.004b27c0
pop edi
pop esi
mov esp, ebp
pop ebp
ret
push 1
push dword [edi + 0xfc]
push dword [edi + 0xf4]
call dword [sym.imp.KERNEL32.dll_MoveFileExW]
test eax, eax
jne case.0x4b3a01.26
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, eax
mov dword [edi + 0xf0], eax
call fcn.004b8970
mov dword [edi + 0x48], eax
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov ecx, edi
call fcn.004b2ac0
pop edi
pop esi
mov esp, ebp
pop ebp
ret
push 0
push dword [edi + 0xf4]
push dword [edi + 0xfc]
call dword [sym.imp.KERNEL32.dll_CreateHardLinkW]
test eax, eax
jne case.0x4b3a01.26
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, eax
mov dword [edi + 0xf0], eax
call fcn.004b8970
mov dword [edi + 0x48], eax
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov ecx, edi
call fcn.004b37b0
pop edi
pop esi
mov esp, ebp
pop ebp
ret
push 0
push 0x2200000
push 3
push 0
push 0
push 0
push dword [edi + 0xf4]
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov esi, eax
cmp esi, 0xffffffff
je 0x4b3c11
push 0
lea edx, [edi + 0x4c]
mov ecx, esi
call fcn.004b1fa0
add esp, 4
test eax, eax
jne 0x4b3f10
or dword [edi + 0xec], 8
push esi
mov dword [edi + 0x48], eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov ecx, edi
call fcn.004b3860
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov edx, str.uv__malloc
mov ecx, 0xe
call fcn.004b88e0
nop
or byte [edx], bh
dec ebx
add byte [0x52004b3a], dl
cmp cl, byte [ebx]
pop edi
cmp cl, byte [ebx]
sub eax, 0x37004b3c
cmp eax, 1031995467
dec ebx
add ah, dl
cmp eax, 0x3e1e004b
dec ebx
add byte [eax + 0x47004b3e], al
aas
dec ebx
add byte [ebx - 0x13ffb4c1], ah
aas
dec ebx
add byte [ebx], cl
inc eax
dec ebx
add byte [eax], bl
inc eax
dec ebx
add byte [eax], bl
inc eax
dec ebx
add byte [0x32004b40], ah
inc eax
dec ebx
add byte [ebx + 0x40], cl
dec ebx
add byte [eax + eax*2 + 0x4b], ah
add byte [ecx + 0x40], dh
dec ebx
add byte [ecx - 0x49ffb4c0], ch
inc eax
dec ebx
add dh, ch
inc eax
dec ebx
add bl, bh
inc eax
dec ebx
add byte [ecx], dl
dec ebx
add byte [ecx], dl
dec ebx
add byte [edi + 0x41], cl
dec ebx
add dl, dl
cmp ecx, dword [ebx]
adc dword [esi], edi
dec ebx
add ah, cl
int3