Function at 0x4230a0
Capabilities:
Delete file
Get common file path
Get file size
Parse pe header
Read file on windows
Set file attributes
Write file on windows

Disassembly:
sub esp, 0x628
mov eax, dword [0x52e144]
xor eax, esp
mov dword [esp + 0x624], eax
push ebx
push ebp
push esi
push edi
push 0x104
lea eax, [esp + 0x534]
xor ebp, ebp
push eax
push ebp
mov dword [esp + 0x1c], ebp
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
push ebp
push 0x80
push 3
push ebp
push 3
push closesocket
lea ecx, [esp + 0x548]
push ecx
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov edi, eax
mov dword [esp + 0x1c], edi
cmp edi, 0xffffffff
je 0x423407
push ebp
push edi
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov esi, eax
cmp esi, 0xffffffff
jne 0x42311c
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
xor eax, eax
jmp 0x423435
push esi
call fcn.004b958c
mov ebx, eax
add esp, 4
cmp ebx, ebp
je 0x42310e
push ebp
lea edx, [esp + 0x24]
push edx
push esi
push ebx
push edi
call dword [sym.imp.KERNEL32.dll_ReadFile]
cmp dword [esp + 0x20], esi
jne 0x42310e
mov eax, 0x5a4d
cmp word [ebx], ax
jne 0x42317f
mov ecx, dword [ebx + 0x3c]
add ecx, ebx
cmp dword [ecx], 0x4550
jne 0x42317f
mov eax, dword [ecx + 0x98]
mov ecx, dword [ecx + 0x9c]
cmp eax, ebp
je 0x42317f
cmp ecx, ebp
je 0x42317f
cmp byte [eax + ebx - 1], 0
lea eax, [eax + ebx - 1]
jne 0x42317d
dec eax
inc ecx
cmp byte [eax], 0
je 0x423176
sub esi, ecx
mov ecx, dword [esi + ebx - 0x10]
mov edx, dword [esi + ebx - 0xc]
mov edi, dword [esi + ebx - 8]
xor eax, eax
mov dword [esp + 0x14], ebp
mov dword [esp + 0x18], ebp
mov ebp, dword [esi + ebx - 4]
cmp ecx, 0x32812622
jne 0x4231f9
cmp ebp, 0x32812621
jne 0x4231f9
sub esi, edi
sub esi, edx
sub esi, 0x10
xor ecx, ecx
mov eax, esi
mov edx, ecx
mov esi, ecx
mov edi, ecx
cmp eax, 0x10
jbe 0x4231cf
mov ecx, dword [eax + ebx - 0x10]
mov edx, dword [eax + ebx - 0xc]
mov esi, dword [eax + ebx - 8]
mov edi, dword [eax + ebx - 4]
cmp ecx, 0x32812624
jne 0x4231ea
cmp edi, 0x32812623
jne 0x4231ea
mov ecx, 0xfffffff0
sub ecx, esi
sub ecx, edx
add eax, ecx
cmp eax, 8
jbe 0x4231f9
mov ebp, dword [eax + ebx - 8]
mov esi, dword [eax + ebx - 4]
jmp 0x423201
mov esi, dword [esp + 0x18]
mov ebp, dword [esp + 0x14]
cmp ebp, 0xa77a65ed
jne 0x423211
mov ebp, dword [eax + ebx - 0xc]
mov esi, dword [eax + ebx - 8]
cmp esi, 0xa77a65ed
jne 0x4233ce
cmp eax, ebp
jbe 0x4233bf
sub eax, ebp
cmp byte [esp + 0x63c], 0
lea edx, [eax + ebx - 8]
mov dword [esp + 0x14], edx
je 0x42327b
push 0x104
lea eax, [esp + 0x430]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
push 0x5132d0
call fcn.00404690
add esp, 4
mov edx, eax
jmp 0x423260
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x423260
lea edi, [esp + 0x42c]
sub eax, edx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x423271
jmp 0x4232b9
lea ecx, [esp + 0x42c]
push ecx
push 0x104
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
push 0x5132c8
call fcn.00404690
add esp, 4
mov edx, eax
lea ecx, [ecx]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x4232a0
lea edi, [esp + 0x42c]
sub eax, edx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x4232b1
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
push 0x5132b4
rep movsb byte es:[edi], byte [esi]
call fcn.00404690
add esp, 4
mov esi, eax
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x4232d8
lea edi, [esp + 0x42c]
sub eax, esi
dec edi
lea esp, [esp]
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x4232f0
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
push 0x80
lea edx, [esp + 0x430]
and ecx, 3
push edx
rep movsb byte es:[edi], byte [esi]
call dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
lea eax, [esp + 0x42c]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
push 0
push 0x80
push 2
push 0
push 3
push 0x40000000
lea ecx, [esp + 0x444]
push ecx
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov esi, eax
cmp esi, 0xffffffff
je 0x4233a9
push 0x5132b4
call fcn.00404690
inc eax
push eax
lea edx, [esp + 0x2c]
push 0xe
push edx
call fcn.004aa670
mov edi, dword [esp + 0x24]
push edi
push edi
lea eax, [esp + 0x3c]
push ebp
push eax
call fcn.004aa750
add esp, 0x20
push 0
lea ecx, [esp + 0x14]
push ecx
push ebp
push edi
push esi
mov byte [0x53b38e], 1
call dword [sym.imp.KERNEL32.dll_WriteFile]
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, 1
add dword [0x53b530], eax
mov dword [esp + 0x10], eax
jmp 0x4233f1
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
lea edx, [esp + 0x430]
push edx
push 0x51329c
jmp 0x4233db
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push ebp
push 0x513284
jmp 0x4233db
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push esi
push 0x51326c
call fcn.00404690
add esp, 4
push eax
push 0x527e20
call fcn.00401350
add esp, 0x10
mov eax, dword [esp + 0x1c]
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push ebx
call fcn.004b8a69
add esp, 4
jmp 0x423431
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
lea ecx, [esp + 0x534]
push ecx
push 0x513254
call fcn.00404690
add esp, 4
push eax
push 0x527e20
call fcn.00401350
add esp, 0x10
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x634]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.004b6da3
add esp, 0x628
ret