Function at 0x40cc2b
Capabilities:
Get file size
Read file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1a4
push ebx
push esi
push edi
mov ebx, 0x4e2021da
mov eax, ebx
xor eax, ebx
mov ebx, eax
mul ebx
mov dword [ebp - 0x1a0], eax
mov ebx, eax
push 0x104
lea eax, [ebp - 0x10c]
push eax
push 0
call sub.KERNEL32.DLL_GetModuleFileNameA
mov eax, ebx
xor eax, ebx
mov ebx, eax
push 0
lea eax, [ebp - 0x19c]
push eax
lea eax, [ebp - 0x10c]
push eax
call sub.KERNEL32.DLL_OpenFile
mov dword [ebp - 8], eax
cmp eax, 0xffffffff
je 0x40cf58
push 0
push dword [ebp - 8]
call sub.KERNEL32.DLL_GetFileSize
push 0
push 0
mov edx, eax
sub edx, 5
push edx
push dword [ebp - 8]
call sub.KERNEL32.DLL_SetFilePointer
sub ebx, 0x7e40
push 0
lea eax, [ebp - 0x114]
push eax
push 5
lea eax, [ebp - 0x10c]
push eax
push dword [ebp - 8]
call sub.KERNEL32.DLL_ReadFile
cmp byte [ebp - 0x108], 0x2a
je 0x40cce4
push dword [ebp - 8]
call sub.KERNEL32.DLL_CloseHandle
xor ebx, 0xe81
jmp 0x40cf52
mov eax, dword [ebp - 0x10c]
mov dword [ebp - 4], eax
push 0
push dword [ebp - 8]
call sub.KERNEL32.DLL_GetFileSize
push 0
push 0
mov edx, eax
sub edx, dword [ebp - 4]
push edx
push dword [ebp - 8]
call sub.KERNEL32.DLL_SetFilePointer
xor ebx, 0x33d2
push dword [ebp - 4]
push 0x40
call sub.KERNEL32.DLL_LocalAlloc
mov edi, eax
mov dword [ebp - 0x110], eax
push 0
lea eax, [ebp - 0x114]
push eax
mov eax, dword [ebp - 4]
sub eax, 5
push eax
push edi
push dword [ebp - 8]
call sub.KERNEL32.DLL_ReadFile
xor esi, esi
jmp 0x40cd56
movsx eax, byte [edi + esi]
or eax, eax
je 0x40cd55
cmp eax, 0x69
je 0x40cd55
movsx eax, byte [edi + esi]
xor eax, 0x69
mov byte [edi + esi], al
inc esi
mov eax, dword [ebp - 4]
sub eax, 5
cmp esi, eax
jb 0x40cd3e
mov ecx, edi
or eax, 0xffffffff
inc eax
cmp byte [ecx + eax], 0
jne 0x40cd65
mov edx, eax
add edx, 1
push edx
push edi
push 0x418400
call sub.CRTDLL.DLL_memcpy
add esp, 0xc
mov eax, ebx
xor eax, ebx
mov ebx, eax
lea ecx, [edi]
or eax, 0xffffffff
inc eax
cmp byte [ecx + eax], 0
jne 0x40cd8b
lea edi, [edi + eax + 1]
lea ecx, [edi]
or eax, 0xffffffff
inc eax
cmp byte [ecx + eax], 0
jne 0x40cd9b
mov edx, eax
add edx, 1
push edx
push edi
push 0x419b80
call sub.CRTDLL.DLL_memcpy
add esp, 0xc
lea ecx, [edi]
or eax, 0xffffffff
inc eax
cmp byte [ecx + eax], 0
jne 0x40cdbb
lea edi, [edi + eax + 1]
lea ecx, [edi]
or eax, 0xffffffff
inc eax
cmp byte [ecx + eax], 0
jne 0x40cdcb
mov edx, eax
add edx, 1
push edx
push edi
push 0x42c3f0
call sub.CRTDLL.DLL_memcpy
add esp, 0xc
add ebx, 0x4d95
lea ecx, [edi]
or eax, 0xffffffff
inc eax
cmp byte [ecx + eax], 0
jne 0x40cdf1
lea edi, [edi + eax + 1]
call sub.CRTDLL.DLL_rand
mov edx, eax
mov word [0x42d0a4], dx
lea ecx, [edi]
or eax, 0xffffffff
inc eax
cmp byte [ecx + eax], 0
jne 0x40ce0f
lea edi, [edi + eax + 1]
xor ebx, 0x1c31
call sub.CRTDLL.DLL_rand
mov edx, eax
mov word [0x42d0a8], dx
lea ecx, [edi]
or eax, 0xffffffff
inc eax
cmp byte [ecx + eax], 0
jne 0x40ce33
lea edi, [edi + eax + 1]
lea ecx, [edi]
or eax, 0xffffffff
inc eax
cmp byte [ecx + eax], 0
jne 0x40ce43
mov edx, eax
add edx, 1
push edx
push edi
push 0x419d90
call sub.CRTDLL.DLL_memcpy
add esp, 0xc
lea ecx, [edi]
or eax, 0xffffffff
inc eax
cmp byte [ecx + eax], 0
jne 0x40ce63
lea edi, [edi + eax + 1]
mov eax, ebx
xor eax, ebx
mov ebx, eax
lea ecx, [edi]
or eax, 0xffffffff
inc eax
cmp byte [ecx + eax], 0
jne 0x40ce79
mov edx, eax
add edx, 1
push edx
push edi
push 0x42c600
call sub.CRTDLL.DLL_memcpy
add esp, 0xc
lea ecx, [edi]
or eax, 0xffffffff
inc eax
cmp byte [ecx + eax], 0
jne 0x40ce99
lea edi, [edi + eax + 1]
lea ecx, [edi]
or eax, 0xffffffff
inc eax
cmp byte [ecx + eax], 0
jne 0x40cea9
mov edx, eax
add edx, 1
push edx
push edi
push 0x42b0d0
call sub.CRTDLL.DLL_memcpy
add esp, 0xc
mov eax, 0x598a
mul ebx
mov dword [ebp - 0x1a4], eax
mov eax, dword [ebp - 0x1a4]
mov ebx, eax
lea ecx, [edi]
or eax, 0xffffffff
inc eax
cmp byte [ecx + eax], 0
jne 0x40cede
lea edi, [edi + eax + 1]
push edi
call sub.CRTDLL.DLL_atoi
add esp, 4
mov dword [0x42d0a0], eax
lea ecx, [edi]
or eax, 0xffffffff
inc eax
cmp byte [ecx + eax], 0
jne 0x40cefc
lea edi, [edi + eax + 1]
sub ebx, 0x45a7
push edi
call sub.CRTDLL.DLL_atoi
add esp, 4
mov dword [0x42d0ac], eax
lea ecx, [edi]
or eax, 0xffffffff
inc eax
cmp byte [ecx + eax], 0
jne 0x40cf20
lea edi, [edi + eax + 1]
push edi
call sub.CRTDLL.DLL_atoi
add esp, 4
mov dword [0x42d0b0], eax
xor ebx, 0x12b4
push dword [ebp - 0x110]
call sub.KERNEL32.DLL_LocalFree
push dword [ebp - 8]
call sub.KERNEL32.DLL_CloseHandle
add ebx, 0x7049
pop edi
pop esi
pop ebx
leave
ret