Function at 0x402bf2
Capabilities:
Accept command line arguments
Get file size
Read file on windows

Disassembly:
xor edi, edi
push 0xff
push 8
push esp
call sub.comctl32.dll_InitCommonControlsEx
pop ecx
or eax, eax
pop edx
jne 0x402c21
mov esi, str.InitCommonControls_Failed
push 0x10
push dword [0x404010]
push esi
push edi
call sub.user32.dll_MessageBoxA
push esi
call fcn.00403340
push edi
call sub.kernel32.dll_GetModuleHandleA
mov dword [0x404f08], eax
push 0x1f5
push eax
call sub.user32.dll_LoadIconA
mov dword [0x404f0c], eax
push 0x7f00
push edi
call sub.user32.dll_LoadCursorA
mov dword [0x404f10], eax
call sub.kernel32.dll_GetCommandLineA
mov ecx, edi
mov dx, 0x2220
mov dword [0x404f00], eax
cmp cl, dh
jne 0x402c69
mov cl, byte [eax]
jecxz 0x402c7a
inc eax
cmp cl, dh
jne 0x402c60
mov cl, byte [eax]
jecxz 0x402c7a
inc eax
cmp cl, dl
jne 0x402c5c
mov cl, byte [eax]
inc eax
cmp cl, dl
je 0x402c72
dec eax
mov dword [0x404f04], eax
push 8
mov ebx, edi
pop ecx
movzx edx, byte [eax]
sub dl, 0x30
cmp dl, 9
jbe 0x402c9a
and dl, 0xdf
sub dl, 7
cmp dl, 0xf
ja 0x402cb6
shl ebx, 4
or ebx, edx
inc eax
loop 0x402c84
or ebx, ebx
je 0x402cb6
mov edi, section..data
xchg ebx, eax
lea esi, [edi + 0x14]
stosd dword es:[edi], eax
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov edi, ecx
mov eax, dword [0x404f30]
mov edx, 0x100
or eax, eax
jne 0x402cc9
mov eax, 0x50
cmp eax, edx
ja 0x402cce
xchg edx, eax
mov dword [0x404f30], edx
mov eax, edx
add edx, 5
shl eax, 3
and edx, 0xfffffffc
add eax, 0x1b
mov dword [0x404f38], edx
mov dword [0x40418c], eax
mov ecx, edx
mov eax, dword [0x404f34]
shr ecx, 2
or eax, eax
mov dword [0x404f3c], ecx
jne 0x402d06
mov eax, 0x400
cmp eax, 0x400
jbe 0x402d12
mov eax, 0x400
mov dword [0x404f34], eax
dec eax
mov dword [0x404f40], eax
mov dword [0x404f54], eax
imul eax, ecx
add ecx, eax
mov dword [0x404f44], eax
mov dword [0x404f48], ecx
inc ecx
shl eax, 2
push edx
shl ecx, 2
push eax
push ecx
call sub.kernel32.dll_GetProcessHeap
pop edx
mov dword [0x404f20], eax
push edx
push 8
push eax
call sub.kernel32.dll_HeapAlloc
or eax, eax
jne 0x402d5e
mov esi, str.Heap_Allocation_Error
jmp 0x402c0c
mov dword [0x404f24], eax
pop edx
add eax, 3
and eax, 0xfffffffc
pop ecx
add edx, eax
add ecx, eax
mov dword [0x404f50], edx
mov dword [0x404f4c], ecx
mov dword [0x404f2c], eax
mov ebp, edi
call fcn.004027ca
push eax
mov edi, ecx
mov ebx, ebp
push 0x80000003
push eax
call fcn.00402774
inc eax
mov esi, 0x405068
je 0x402ddd
dec eax
push edx
xchg ebx, eax
push ecx
push esp
push ebx
call sub.kernel32.dll_GetFileSizeEx
pop eax
pop edx
cmp eax, 0x78
jne 0x402ddd
or edx, edx
jne 0x402ddd
push eax
push eax
mov ecx, esp
push edx
push ecx
push eax
push esi
push ebx
call sub.kernel32.dll_ReadFile
pop ecx
or eax, eax
pop edx
je 0x402ddd
cmp ecx, edx
jne 0x402ddd
push 0xa
pop ecx
push esi
repe cmpsb byte [esi], byte es:[edi]
movzx eax, word [esi]
pop esi
jne 0x402ddd
cmp eax, edx
je 0x402df3
mov dword [esi], ebp
mov edi, 0x404f8c
call fcn.00401d6a
call fcn.00401d6a
jmp 0x402e78
add esi, 0xc
mov edi, 0x40418c
lodsw ax, word [esi]
push 8
stosd dword es:[edi], eax
lodsw ax, word [esi]
pop ecx
stosd dword es:[edi], eax
lodsw ax, word [esi]
mov ebp, eax
shr ebp, 4
and ebp, 2
mov edx, eax
shr edx, 3
and edx, ecx
mov dword [0x4042e8], edx
mov edx, eax
shr edx, 4
and edx, ecx
mov dword [0x404348], edx
mov edx, eax
shr edx, 0xa
and edx, ecx
mov dword [0x404354], edx
mov edx, eax
shr edx, 0xb
and edx, ecx
mov dword [0x40436c], edx
mov edx, eax
shr edx, 0xc
and edx, ecx
mov dword [0x404378], edx
and eax, 0x1f1f
add eax, 0x404
mov edx, 0xffffff
stosd dword es:[edi], eax
lodsd eax, dword [esi]
dec esi
and eax, edx
stosd dword es:[edi], eax
lodsd eax, dword [esi]
dec esi
and eax, edx
stosd dword es:[edi], eax
push 0x20
mov edi, 0x404f8c
pop ecx
lodsd eax, dword [esi]
dec esi
and eax, edx
stosd dword es:[edi], eax
loop 0x402e71
or ebx, ebx
je 0x402e82
push ebx
call sub.kernel32.dll_CloseHandle
inc ebp
call fcn.00402805
push ebp
call fcn.00401c8c
call fcn.00401cd3
mov ecx, 0x40418c
xor edi, edi
cmp edx, dword [ecx]
jae 0x402ea0
mov dword [ecx], edx
cmp eax, dword [ecx + 4]
jae 0x402ea8
mov dword [ecx + 4], eax
push edi
call sub.user32.dll_GetDC
mov edx, 0x40502c
push eax
mov dword [edx + 0x1c], 0x6d726554
mov dword [edx + 0x20], 0x6c616e69
mov byte [edx + 0x24], 0
mov byte [edx + 0x17], 0xff
mov byte [edx + 0x1b], 0
push edi
push edi
push 0x402ba6
push edx
push eax
call sub.gdi32.dll_EnumFontFamiliesExA
push edi
call sub.user32.dll_ReleaseDC
call sub.user32.dll_CreateMenu
mov dword [0x404f18], eax
mov esi, 0x404260
or edi, 4
xchg ebx, eax
call sub.user32.dll_CreatePopupMenu
push eax
lodsd eax, dword [esi]
xchg ebp, eax
pop edx
lodsd eax, dword [esi]
push edx
push eax
lodsd eax, dword [esi]
push eax
lodsd eax, dword [esi]
push eax
push edx
call sub.user32.dll_AppendMenuA
dec ebp
jne 0x402efd
pop edx
lodsd eax, dword [esi]
push edx
push eax
push edx
push 0x10
push ebx
call sub.user32.dll_AppendMenuA
dec edi
jne 0x402ef5
pop ecx
pop ebp
pop dword [0x404f1c]
pop edx
or edi, 2
call sub.user32.dll_CreatePopupMenu
xchg edx, eax
lodsd eax, dword [esi]
xchg ecx, eax
push edx
lodsd eax, dword [esi]
push ecx
push eax
lodsd eax, dword [esi]
push eax
lodsd eax, dword [esi]
push eax
push edx
call sub.user32.dll_AppendMenuA
pop ecx
pop edx
loop 0x402f32
or ecx, 3
sub ecx, edi
lodsd eax, dword [esi]
shl ecx, 1
push eax
push edx
push 0x410
push ecx
push ebp
call sub.user32.dll_InsertMenuA
dec edi
jne 0x402f2a
mov ecx, dword [0x4041a0]
mov edx, 0x4050e0
sub ecx, edx
shr ecx, 1
mov dword [0x4041a0], ecx
je 0x403055
dec ecx
jne 0x402f8a
mov edx, 0x41
call fcn.00401bc2
jmp 0x403055
push ebx
push ebp
push edx
movzx eax, word [edx]
push ecx
push ecx
movzx ecx, word [edx + 2]
cmp eax, ecx
ja 0x402f9d
xchg ecx, eax
jmp 0x402fa4
mov word [edx], cx
mov word [edx + 2], ax
pop ecx
inc edx
inc edx
loop 0x402f91
pop ecx
pop edx
loop 0x402f8c
push edx
call sub.user32.dll_CreatePopupMenu
pop edx
mov bx, 0x3030
mov esi, 0x41
xchg ebp, eax
push edx
push ecx
push eax
mov ecx, dword [0x4041a0]
mov edi, esp
movzx eax, word [edx]
push edi
push eax
mov al, ah
aam 0xa
or eax, ebx
cmp ah, bl
je 0x402fdb
mov byte [edi], ah
inc edi
mov ah, 0x78
stosw word es:[edi], ax
pop eax
aam 0xa
or eax, ebx
cmp ah, bl
je 0x402feb
mov byte [edi], ah
inc edi
mov ah, 0
inc edx
stosw word es:[edi], ax
inc edx
pop edi
push edx
push ecx
push edi
push esi
push 0
push ebp
call sub.user32.dll_AppendMenuA
pop ecx
inc esi
pop edx
inc esi
loop 0x402fc9
pop ebx
pop eax
pop ebx
pop eax
push str.Text_Size
push ebp
push 0x410
push ecx
push eax
call sub.user32.dll_InsertMenuA
mov eax, dword [0x4041a0]
or esi, 0xffffffff
mov edi, eax
shl eax, 1
add eax, 0x41
mov ecx, dword [0x404194]
mov dword [0x4041a0], eax
movzx eax, word [ebx]
sub eax, ecx
jae 0x40303d
neg eax
cmp eax, esi
ja 0x403044
mov edx, ebx
xchg esi, eax
inc ebx
inc ebx
dec edi
jne 0x403034
sub edx, 0x40509f
call fcn.00401bdb
pop ebx
call fcn.00401bef
push dword [0x404198]
call sub.gdi32.dll_CreateSolidBrush
mov edx, dword [0x404f0c]
mov ecx, 0x401da0
push edx
mov esi, str.dTestText
call 0x40308c
mov eax, 1
pop edx
mov esi, str.dTestClass
pop ebp
mov ecx, section..text
push edx
push esi
push edi
push eax
push dword [0x404f10]
push edx
push dword [0x404f08]
push edi
push edi
push ecx
push edi
push 0x30
push esp
call sub.user32.dll_RegisterClassExA
add esp, 0x30
ret