Function at 0x40dfbe
Capabilities:
Parse pe header
Read file on windows

Disassembly:
mov edi, edi
push ebp
lea ebp, [esp - 0x110]
sub esp, 0x190
mov eax, dword [0x44f9f8]
xor eax, ebp
mov dword [ebp + 0x10c], eax
push ebx
push esi
mov esi, dword [ebp + 0x118]
push edi
xor ebx, ebx
push 0x40
lea eax, [ebp + 0xcc]
push ebx
push eax
mov dword [ebp - 0x64], ebx
mov dword [ebp - 0x5c], ebx
mov dword [ebp - 0x78], ebx
mov dword [ebp - 0x74], ebx
call fcn.00408740
push 0xf8
lea eax, [ebp - 0x2c]
push ebx
push eax
call fcn.00408740
xor eax, eax
add esp, 0x18
lea edi, [ebp - 0x54]
stosd dword es:[edi], eax
stosd dword es:[edi], eax
push 8
pop ecx
xor eax, eax
lea edi, [ebp - 0x4c]
rep stosd dword es:[edi], eax
push ebx
lea eax, [ebp - 0x64]
push eax
mov dword [ebp - 0x70], ebx
mov dword [ebp - 0x6c], ebx
xor edi, edi
call fcn.00430622
mov ebx, eax
test ebx, ebx
jns 0x40e04e
push 0x43cd7c
push ebx
call fcn.004315b6
pop ecx
pop ecx
jmp 0x40e457
push 0
push 0x8000080
push 3
push 0
push 1
push SysReAllocString
push dword [ebp - 0x64]
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov dword [ebp - 0x58], eax
cmp eax, 0xffffffff
jne 0x40e0b3
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jle 0x40e085
and eax, 0xffff
or eax, 0x80070000
mov ebx, eax
test ebx, ebx
js 0x40e090
mov ebx, 0x80004005
push ebx
push 0x44
push 0x43cd46
call fcn.004315ca
push dword [ebp - 0x64]
push 0x43cd1a
push ebx
call fcn.004315b6
add esp, 0xc
jmp 0x40e457
mov ebx, dword [sym.imp.KERNEL32.dll_ReadFile]
push 0
lea eax, [ebp - 0x5c]
push eax
push 0x40
lea eax, [ebp + 0xcc]
push eax
push dword [ebp - 0x58]
call ebx
test eax, eax
jne 0x40e10f
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jle 0x40e0e5
and eax, 0xffff
or eax, 0x80070000
mov ebx, eax
test ebx, ebx
js 0x40e0f0
mov ebx, 0x80004005
push ebx
push 0x49
push 0x43cd46
call fcn.004315ca
push 0x43ccfe
push ebx
call fcn.004315b6
pop ecx
pop ecx
jmp 0x40e44e
cmp dword [ebp - 0x5c], 0x40
jb 0x40e123
mov eax, 0x5a4d
cmp ax, word [ebp + 0xcc]
je 0x40e13f
mov esi, 0x8007000d
push esi
push 0x4e
push 0x43cd46
mov ebx, esi
call fcn.004315ca
push 0x43cccc
push esi
jmp 0x40e103
mov eax, dword [ebp + 0x108]
push 0
cdq
push 0
push edx
push eax
push dword [ebp - 0x58]
call dword [sym.imp.KERNEL32.dll_SetFilePointerEx]
test eax, eax
jne 0x40e18f
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jle 0x40e16d
and eax, 0xffff
or eax, 0x80070000
mov ebx, eax
test ebx, ebx
js 0x40e178
mov ebx, 0x80004005
push ebx
push 0x59
push 0x43cd46
call fcn.004315ca
push 0x43ccae
jmp 0x40e102
push 0
lea eax, [ebp - 0x5c]
push eax
push 0x18
lea eax, [ebp - 0x2c]
push eax
push dword [ebp - 0x58]
call ebx
test eax, eax
jne 0x40e1da
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jle 0x40e1b8
and eax, 0xffff
or eax, 0x80070000
mov ebx, eax
test ebx, ebx
js 0x40e1c3
mov ebx, 0x80004005
push ebx
push 0x5f
push 0x43cd46
call fcn.004315ca
push 0x43cc94
jmp 0x40e102
cmp dword [ebp - 0x5c], 0x18
jb 0x40e1e9
cmp dword [ebp - 0x2c], 0x4550
je 0x40e207
mov esi, 0x8007000d
push esi
push 0x64
push 0x43cd46
mov ebx, esi
call fcn.004315ca
push 0x43cc64
jmp 0x40e13c
mov eax, dword [ebp + 0x108]
lea ecx, [eax + 0x58]
mov dword [ebp - 0x7c], ecx
xor ecx, ecx
push ecx
push ecx
add eax, 0x98
push ecx
push eax
push dword [ebp - 0x58]
mov dword [ebp - 0x80], eax
call dword [sym.imp.KERNEL32.dll_SetFilePointerEx]
test eax, eax
jne 0x40e264
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jle 0x40e242
and eax, 0xffff
or eax, 0x80070000
mov ebx, eax
test ebx, ebx
js 0x40e24d
mov ebx, 0x80004005
push ebx
push 0x6f
push 0x43cd46
call fcn.004315ca
push 0x43cc44
jmp 0x40e102
push 0
lea eax, [ebp - 0x5c]
push eax
push 4
lea eax, [ebp - 0x70]
push eax
push dword [ebp - 0x58]
call ebx
test eax, eax
jne 0x40e2af
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jle 0x40e28d
and eax, 0xffff
or eax, 0x80070000
mov ebx, eax
test ebx, ebx
js 0x40e298
mov ebx, 0x80004005
push ebx
push 0x74
push 0x43cd46
call fcn.004315ca
push 0x43cc22
jmp 0x40e102
push 0
lea eax, [ebp - 0x5c]
push eax
push 4
lea eax, [ebp - 0x6c]
push eax
push dword [ebp - 0x58]
call ebx
test eax, eax
jne 0x40e2fa
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jle 0x40e2d8
and eax, 0xffff
or eax, 0x80070000
mov ebx, eax
test ebx, ebx
js 0x40e2e3
mov ebx, 0x80004005
push ebx
push 0x79
push 0x43cd46
call fcn.004315ca
push 0x43cc02
jmp 0x40e102
movzx eax, word [ebp - 0x18]
mov ecx, dword [ebp + 0x108]
lea eax, [eax + ecx + 0x18]
xor ecx, ecx
push ecx
push ecx
push ecx
push eax
push dword [ebp - 0x58]
call dword [sym.imp.KERNEL32.dll_SetFilePointerEx]
test eax, eax
jne 0x40e354
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jle 0x40e32f
and eax, 0xffff
or eax, 0x80070000
mov ebx, eax
test ebx, ebx
js 0x40e33a
mov ebx, 0x80004005
push ebx
push 0x84
push 0x43cd46
call fcn.004315ca
push 0x43cbdc
jmp 0x40e102
and dword [ebp - 0x68], edi
push 0
lea eax, [ebp - 0x5c]
push eax
push 0x28
lea eax, [ebp - 0x54]
push eax
push dword [ebp - 0x58]
call ebx
test eax, eax
je 0x40e3bc
mov dword [ebp - 0x60], 1
cmp dword [ebp - 0x5c], 0x28
jb 0x40e3fe
push 8
lea eax, [ebp - 0x54]
push 0x43cbd2
push eax
call fcn.00409248
add esp, 0xc
test eax, eax
je 0x40e481
movzx eax, word [ebp - 0x26]
cmp dword [ebp - 0x60], eax
jae 0x40e420
inc dword [ebp - 0x68]
inc dword [ebp - 0x60]
push 0
lea eax, [ebp - 0x5c]
push eax
push 0x28
lea eax, [ebp - 0x54]
push eax
push dword [ebp - 0x58]
call ebx
test eax, eax
jne 0x40e373
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jle 0x40e3d0
and eax, 0xffff
or eax, 0x80070000
mov ebx, eax
test ebx, ebx
js 0x40e3db
mov ebx, 0x80004005
push ebx
push 0x8d
push 0x43cd46
call fcn.004315ca
push dword [ebp - 0x68]
push 0x43cba2
push ebx
call fcn.004315b6
add esp, 0xc
jmp 0x40e44e
mov esi, 0x8007000d
push esi
push 0x92
push 0x43cd46
mov ebx, esi
call fcn.004315ca
push dword [ebp - 0x68]
push 0x43cb6a
push esi
jmp 0x40e3f4
mov esi, 0x8007000d
push esi
push 0xa0
push 0x43cd46
mov ebx, esi
call fcn.004315ca
push 0x43cb4c
push esi
call fcn.004315b6
pop ecx
pop ecx
test edi, edi
je 0x40e44e
push edi
call fcn.00431962
push dword [ebp - 0x58]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp dword [ebp - 0x64], 0
je 0x40e465
push dword [ebp - 0x64]
call fcn.0042ecb2
mov ecx, dword [ebp + 0x10c]
pop edi
pop esi
mov eax, ebx
xor ecx, ebp
pop ebx
call fcn.004084b8
add ebp, 0x110
leave
ret 4
cmp dword [ebp - 0x44], 0x34
jae 0x40e4ab
mov esi, 0x8007000d
push esi
push 0xac
push 0x43cd46
mov ebx, esi
call fcn.004315ca
push dword [ebp - 0x44]
push 0x43cb1c
jmp 0x40e41d
push 1
push dword [ebp - 0x44]
call fcn.004317d2
mov edi, eax
test edi, edi
jne 0x40e4da
mov ebx, 0x8007000e
push ebx
push 0xb1
push 0x43cd46
call fcn.004315ca
push 0x43caf0
jmp 0x40e102
mov eax, dword [ebp - 0x40]
xor ecx, ecx
push ecx
push ecx
push ecx
push eax
push dword [ebp - 0x58]
call dword [sym.imp.KERNEL32.dll_SetFilePointerEx]
test eax, eax
jne 0x40e52a
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jle 0x40e504
and eax, 0xffff
or eax, 0x80070000
mov ebx, eax
test ebx, ebx
js 0x40e50f
mov ebx, 0x80004005
push ebx
push 0xb7
push 0x43cd46
call fcn.004315ca
push 0x43cc44
push ebx
jmp 0x40e43d
mov eax, dword [ebp - 0x40]
add eax, 0x1c
push 0
mov dword [ebp - 0x60], eax
lea eax, [ebp - 0x5c]
push eax
push dword [ebp - 0x44]
push edi
push dword [ebp - 0x58]
call ebx
test eax, eax
jne 0x40e57c
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jle 0x40e55a
and eax, 0xffff
or eax, 0x80070000
mov ebx, eax
test ebx, ebx
js 0x40e565
mov ebx, 0x80004005
push ebx
push 0xc0
push 0x43cd46
call fcn.004315ca
push 0x43cad2
jmp 0x40e524
mov eax, dword [ebp - 0x44]
cmp eax, dword [ebp - 0x5c]
jbe 0x40e5a5
mov esi, 0x8007000d
push esi
push 0xc5
push 0x43cd46
mov ebx, esi
call fcn.004315ca
push 0x43caac
jmp 0x40e43c
cmp dword [edi + 4], 2
je 0x40e5d5
mov esi, 0x8007000d
push esi
push 0xcc
push 0x43cd46
mov ebx, esi
call fcn.004315ca
push dword [edi + 4]
push 0x43ca74
push esi
call fcn.004315b6
jmp 0x40e699
lea eax, [ebp - 0x78]
push eax
push dword [ebp - 0x58]
call fcn.00435350
mov ebx, eax
test ebx, ebx
jns 0x40e5f1
push 0x43ca50
jmp 0x40e524
mov eax, dword [edi + 0x18]
mov dword [esi], eax
mov ecx, dword [edi + 0x20]
test ecx, ecx
je 0x40e602
mov eax, dword [edi + 0x24]
jmp 0x40e60c
mov ecx, dword [ebp - 0x70]
test ecx, ecx
je 0x40e613
mov eax, dword [ebp - 0x6c]
add eax, ecx
mov dword [esi + 4], eax
jmp 0x40e61b
mov ecx, dword [edi + 0x30]
add ecx, eax
mov dword [esi + 4], ecx
mov eax, dword [ebp - 0x78]
mov dword [esi + 8], eax
mov eax, dword [ebp - 0x74]
mov dword [esi + 0xc], eax
mov eax, dword [ebp - 0x7c]
mov dword [esi + 0x10], eax
mov eax, dword [ebp - 0x80]
mov dword [esi + 0x14], eax
mov eax, dword [ebp - 0x60]
mov dword [esi + 0x18], eax
mov eax, dword [edi + 0x1c]
mov dword [esi + 0x1c], eax
mov eax, dword [edi + 0x20]
mov dword [esi + 0x20], eax
mov eax, dword [edi + 0x24]
mov dword [esi + 0x24], eax
mov eax, dword [edi + 0x28]
mov dword [esi + 0x28], eax
mov eax, dword [edi + 0x2c]
mov dword [esi + 0x2c], eax
push 1
shl eax, 2
push eax
call fcn.004317d2
mov dword [esi + 0x30], eax
test eax, eax
jne 0x40e688
mov ebx, 0x8007000e
push ebx
push 0xef
push 0x43cd46
call fcn.004315ca
push 0x43ca20
jmp 0x40e524
mov ecx, dword [esi + 0x2c]
shl ecx, 2
push ecx
lea ecx, [edi + 0x30]
push ecx
push eax
call fcn.00406c00
add esp, 0xc
jmp 0x40e444