Function at 0x420880
Capabilities:
Create process on windows
Read file on windows

Disassembly:
push ebp
xor eax, eax
mov ebp, esp
push edi
xor ecx, ecx
xor edx, edx
push esi
push ebx
sub esp, 0x23c
mov dword [ebp - 0x210], eax
mov eax, dword [ebp + 0x14]
mov dword [ebp - 0x214], ecx
mov dword [ebp - 0x218], edx
mov dword [esp], eax
call sub.msvcrt.dll_strlen
add eax, 5
mov dword [esp], eax
call sub.msvcrt.dll_malloc
mov edx, dword [ebp + 0x14]
mov esi, eax
mov dword [esp], eax
mov dword [esp + 4], edx
call sub.msvcrt.dll_strcpy
mov dword [esp], esi
call sub.msvcrt.dll_strlen
lea edi, [eax + esi]
xor eax, eax
mov dword [edi], 0x6578652e
mov byte [edi + 4], 0
mov dword [esp + 8], eax
lea eax, [ebp - 0x208]
mov dword [esp + 4], eax
mov dword [esp], esi
call sub.KERNEL32.dll_OpenFile
sub esp, 0xc
cmp eax, 0xffffffff
mov ebx, eax
je 0x420bb0
mov dword [esp], esi
call sub.msvcrt.dll_free
cmp ebx, 0xffffffff
je 0x420c80
mov dword [esp], ebx
xor esi, esi
lea eax, [ebp - 0x20c]
mov dword [esp + 0x10], esi
mov ecx, 0xff
lea esi, [ebp - 0x118]
mov dword [esp + 0xc], eax
mov dword [esp + 8], ecx
mov dword [esp + 4], esi
call sub.KERNEL32.dll_ReadFile
sub esp, 0x14
test eax, eax
je 0x420b80
mov eax, dword [ebp - 0x20c]
cmp eax, 1
jbe 0x420b80
cmp byte [ebp - 0x118], 0x23
je 0x420cd3
mov dword [esp], ebx
call sub.KERNEL32.dll_CloseHandle
mov eax, dword [ebp + 0xc]
sub esp, 4
lea edx, [ebp - 0x200]
mov dword [esp], eax
mov eax, dword [ebp - 0x214]
call fcn.004205c0
test eax, eax
mov ebx, eax
je 0x420dcc
mov eax, dword [ebp + 0x10]
test eax, eax
je 0x4209b9
lea eax, [ebp - 0x210]
mov dword [esp + 4], eax
mov eax, dword [ebp + 0x10]
mov dword [esp], eax
call fcn.00421140
test eax, eax
je 0x420db6
mov dword [ebp + 0x14], 0
mov edi, dword [ebp - 0x214]
mov esi, dword [ebp - 0x218]
test edi, edi
setne al
test esi, esi
setne dl
or eax, edx
test al, 1
jne 0x4209e5
lea eax, [ebp - 0x200]
mov dword [ebp + 0x14], eax
lea esi, [ebp - 0x168]
mov dword [esp], esi
call sub.KERNEL32.dll_GetStartupInfoA
xor eax, eax
xor edx, edx
sub esp, 4
mov word [ebp - 0x136], ax
xor eax, eax
mov ecx, 0x100
mov dword [ebp - 0x134], eax
mov eax, dword [ebp - 0x214]
mov dword [ebp - 0x13c], ecx
mov dword [ebp - 0x164], edx
test eax, eax
je 0x420cb0
mov dword [ebp - 0x15c], eax
mov edx, dword [ebp + 8]
mov eax, dword [edx + 4]
mov dword [ebp - 0x130], eax
mov eax, dword [edx + 0xc]
mov dword [ebp - 0x12c], eax
mov eax, dword [edx + 0x14]
mov dword [ebp - 0x128], eax
mov eax, dword [ebp + 0x18]
test eax, eax
jne 0x420cb8
test byte [0x42a408], 4
je 0x420a99
test ebx, ebx
mov eax, ebx
je 0x420d44
mov dword [esp + 8], eax
mov eax, dword [ebp + 0x14]
test eax, eax
je 0x420d4e
mov dword [esp + 4], eax
mov dword [esp], str.CreateProcess__s__s_...__n
call sub.msvcrt.dll_printf
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x20
mov dword [esp], eax
call fcn.00422040
mov dword [esp + 0x20], esi
lea eax, [ebp - 0x178]
xor edi, edi
mov dword [esp + 0x24], eax
xor eax, eax
xor esi, esi
mov dword [esp + 0x1c], eax
mov eax, dword [ebp - 0x210]
mov dword [esp + 0xc], edi
mov dword [esp + 8], esi
mov dword [esp + 0x18], eax
xor eax, eax
mov dword [esp + 0x14], eax
mov eax, 1
mov dword [esp + 0x10], eax
mov dword [esp + 4], ebx
mov eax, dword [ebp + 0x14]
mov dword [esp], eax
call sub.KERNEL32.dll_CreateProcessA
sub esp, 0x28
test eax, eax
je 0x420d58
mov eax, dword [ebp - 0x178]
mov edx, dword [ebp + 8]
mov dword [edx + 0x34], eax
mov eax, dword [ebp - 0x174]
mov dword [esp], eax
call sub.KERNEL32.dll_CloseHandle
mov edx, dword [ebp + 8]
sub esp, 4
mov eax, dword [edx + 4]
mov dword [esp], eax
call sub.KERNEL32.dll_CloseHandle
mov edx, dword [ebp + 8]
sub esp, 4
mov eax, dword [edx + 0xc]
mov dword [esp], eax
call sub.KERNEL32.dll_CloseHandle
mov edx, dword [ebp + 8]
sub esp, 4
mov eax, dword [edx + 0x14]
mov dword [esp], eax
call sub.KERNEL32.dll_CloseHandle
mov eax, dword [ebp + 8]
sub esp, 4
mov dword [eax + 4], 0
mov dword [eax + 0xc], 0
mov dword [eax + 0x14], 0
mov dword [esp], ebx
call sub.msvcrt.dll_free
mov eax, dword [ebp - 0x210]
test eax, eax
jne 0x420ca0
mov edx, dword [ebp + 8]
xor eax, eax
mov dword [edx + 0x44], 0
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
call sub.KERNEL32.dll_GetLastError
mov edx, dword [ebp + 8]
mov dword [edx + 0x40], eax
mov dword [edx + 0x44], 0x66
mov dword [esp], ebx
call sub.KERNEL32.dll_CloseHandle
sub esp, 4
lea esp, [ebp - 0xc]
mov eax, 0xffffffff
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [edi], 0x646d632e
xor eax, eax
lea edx, [ebp - 0x208]
mov byte [edi + 4], 0
mov dword [esp + 8], eax
mov dword [esp + 4], edx
mov dword [esp], esi
call sub.KERNEL32.dll_OpenFile
sub esp, 0xc
cmp eax, 0xffffffff
mov ebx, eax
jne 0x420906
mov dword [edi], 0x7461622e
xor eax, eax
mov byte [edi + 4], 0
mov dword [esp + 8], eax
lea eax, [ebp - 0x208]
mov dword [esp + 4], eax
mov dword [esp], esi
call sub.KERNEL32.dll_OpenFile
sub esp, 0xc
cmp eax, 0xffffffff
mov ebx, eax
jne 0x420906
xor eax, eax
lea edx, [ebp - 0x208]
mov dword [esp + 8], eax
mov dword [esp + 4], edx
mov eax, dword [ebp + 0x14]
mov dword [esp], eax
call sub.KERNEL32.dll_OpenFile
sub esp, 0xc
cmp eax, 0xffffffff
mov ebx, eax
jne 0x420906
mov dword [edi], 0x6d6f632e
xor eax, eax
lea edx, [ebp - 0x208]
mov byte [edi + 4], 0
mov dword [esp + 8], eax
mov dword [esp + 4], edx
mov dword [esp], esi
call sub.KERNEL32.dll_OpenFile
sub esp, 0xc
cmp eax, 0xffffffff
mov ebx, eax
jne 0x420906
mov dword [esp], esi
call sub.msvcrt.dll_free
jmp 0x420c80
mov eax, dword [ebp + 0xc]
mov edi, 1
mov dword [ebp - 0x218], edi
mov dword [esp], eax
mov edx, dword [ebp + 0x14]
jmp 0x420980
mov dword [esp], eax
call sub.msvcrt.dll_free
jmp 0x420b6a
mov eax, dword [ebp + 0x14]
jmp 0x420a28
mov eax, dword [ebp - 0x210]
test eax, eax
je 0x420b9d
mov dword [esp], eax
call sub.msvcrt.dll_free
jmp 0x420b9d
cmp byte [ebp - 0x117], 0x21
jne 0x420969
xor edx, edx
mov byte [eax + ebp - 0x118], dl
mov eax, 0xa
mov dword [esp + 4], eax
mov dword [esp], esi
call sub.msvcrt.dll_strchr
test eax, eax
je 0x420d01
mov byte [eax], 0
mov dword [esp], esi
mov eax, 0xd
mov dword [esp + 4], eax
call sub.msvcrt.dll_strchr
test eax, eax
je 0x420d19
mov byte [eax], 0
mov dword [esp], esi
mov eax, 0x2f
mov dword [esp + 4], eax
call sub.msvcrt.dll_strrchr
mov dword [ebp - 0x214], eax
test eax, eax
je 0x420de2
inc eax
mov dword [ebp - 0x214], eax
jmp 0x420969
mov eax, str.NULL
jmp 0x420a6a
mov eax, str.NULL
jmp 0x420a79
call sub.KERNEL32.dll_GetLastError
mov edx, dword [ebp + 8]
mov dword [edx + 0x40], eax
mov dword [edx + 0x44], 0x68
mov dword [esp + 0xc], ebx
mov edx, dword [ebp + 0x14]
test edx, edx
je 0x420ded
mov dword [esp + 8], edx
mov ecx, str.process_begin:_CreateProcess__s___s__...__failed._n
mov dword [esp + 4], ecx
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call sub.msvcrt.dll_fprintf
mov eax, dword [ebp - 0x210]
test eax, eax
jne 0x420da9
mov dword [esp], ebx
call sub.msvcrt.dll_free
jmp 0x420b9d
mov dword [esp], eax
call sub.msvcrt.dll_free
mov dword [esp], ebx
jmp 0x420d9f
mov edx, dword [ebp + 8]
mov dword [edx + 0x40], 0
mov dword [edx + 0x44], 0x67
mov dword [esp], ebx
jmp 0x420d9f
mov edx, dword [ebp + 8]
mov dword [edx + 0x40], 0
mov dword [edx + 0x44], 0x67
jmp 0x420b9d
lea eax, [ebp - 0x116]
jmp 0x420d39
mov edx, str.NULL
jmp 0x420d75