Function at 0x401560
Capabilities:
Inspect section memory permissions
Parse pe header

Disassembly:
sub esp, 0x3c
push ebx
mov ebx, dword [esp + 0x44]
mov eax, 0x5a4d
mov dword [esp + 0x28], 0
cmp word [ebx], ax
je 0x40158e
push 0xbe
push 0x1b
call fcn.00402ca0
add esp, 8
pop ebx
add esp, 0x3c
ret
push ebp
mov ebp, dword [ebx + 0x3c]
add ebp, ebx
mov dword [esp + 0x14], ebp
cmp dword [ebp], 0x4550
je 0x4015b6
push 0xc6
push 0x1b
call fcn.00402ca0
add esp, 8
pop ebp
pop ebx
add esp, 0x3c
ret
push esi
mov esi, dword [ebp + 0x34]
push edi
push 4
push 0x3000
push dword [ebp + 0x50]
push esi
call dword [0x420c48]
mov edi, eax
mov dword [esp + 0x50], edi
test edi, edi
jne 0x401608
push 4
push 0x3000
push dword [ebp + 0x50]
push eax
call dword [0x420c48]
mov edi, eax
mov dword [esp + 0x50], eax
test edi, edi
jne 0x401608
push 0xd2
push 0x16
call fcn.00402ca0
add esp, 8
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x3c
ret
mov eax, edi
sub eax, esi
mov esi, dword [ebx + 0x3c]
add esi, 0xf8
mov dword [esp + 0x24], eax
push esi
cdq
push ebx
push edi
mov dword [esp + 0x20], eax
mov dword [esp + 0x2c], edx
call fcn.004046f0
lea ecx, [esi + edi]
movzx edi, word [ebp + 6]
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x24], edi
lea eax, [edi + edi*4]
shl eax, 3
push eax
lea eax, [esi + ebx]
push eax
push ecx
call fcn.004046f0
mov eax, dword [ebp + 0x54]
xor edx, edx
mov ecx, dword [ebp + 0x38]
dec eax
add eax, ecx
mov esi, dword [esp + 0x68]
div ecx
add esp, 0x18
mov dword [esp + 0x10], ecx
mov ebp, eax
imul ebp, ecx
add ebp, esi
test edi, edi
je 0x4016a8
mov edi, dword [esp + 0x30]
mov esi, dword [esp + 0x18]
add edi, 0x14
push dword [edi - 4]
mov eax, dword [edi]
add eax, ebx
push eax
push ebp
call fcn.004046f0
mov eax, dword [edi - 0xc]
lea edi, [edi + 0x28]
mov ecx, dword [esp + 0x1c]
dec eax
add eax, ecx
xor edx, edx
div ecx
add esp, 0xc
imul eax, ecx
add ebp, eax
sub esi, 1
jne 0x401678
mov esi, dword [esp + 0x50]
mov eax, dword [esp + 0x14]
or eax, dword [esp + 0x20]
je 0x401794
mov ecx, dword [esp + 0x24]
mov eax, ecx
mov ebx, dword [esp + 0x1c]
shr eax, 0x10
mov dword [esp + 0x38], eax
movzx eax, cx
xor ecx, ecx
mov edi, dword [ebx + 0xa0]
mov edx, dword [ebx + 0xa4]
add edi, esi
mov dword [esp + 0x40], edx
mov dword [esp + 0x3c], eax
mov dword [esp + 0x2c], ecx
test edx, edx
je 0x401794
nop
mov ebp, dword [edi + 4]
lea edx, [edi + 8]
mov ebx, dword [edi]
sub ebp, 8
add ebx, esi
mov dword [esp + 0x28], 0
shr ebp, 1
je 0x401779
nop dword [eax]
movzx eax, word [edx]
mov ecx, eax
shr eax, 0xc
and ecx, 0xfff
cmp eax, 0xa
ja case.0x40172e.4
movzx eax, byte [eax + 0x401a14]
jmp dword [eax*4 + 0x4019fc]
mov eax, ecx
mov ecx, dword [esp + 0x14]
add dword [eax + ebx], ecx
mov ecx, dword [esp + 0x20]
adc dword [eax + ebx + 4], ecx
jmp case.0x40172e.0
mov eax, ecx
mov ecx, dword [esp + 0x24]
add dword [eax + ebx], ecx
jmp case.0x40172e.0
mov eax, ecx
mov ecx, dword [esp + 0x38]
jmp 0x401761
mov eax, ecx
mov ecx, dword [esp + 0x3c]
add word [eax + ebx], cx
mov eax, dword [esp + 0x28]
add edx, 2
inc eax
mov dword [esp + 0x28], eax
cmp eax, ebp
jb 0x401710
mov ecx, dword [esp + 0x2c]
mov eax, dword [edi + 4]
add eax, 3
and eax, 0xfffffffc
add ecx, eax
add edi, eax
mov dword [esp + 0x2c], ecx
cmp ecx, dword [esp + 0x40]
jb 0x4016f0
mov eax, dword [esp + 0x1c]
cmp dword [eax + 0x84], 0
je 0x40186c
mov edi, dword [eax + 0x80]
add edi, esi
mov dword [esp + 0x2c], edi
cmp dword [edi], 0
je 0x40186c
nop word [eax + eax]
mov eax, dword [edi + 0xc]
add eax, esi
push eax
call dword [0x420c40]
mov ebp, eax
test ebp, ebp
je 0x4018c8
mov ebx, dword [edi]
mov edi, dword [edi + 0x10]
add ebx, esi
add edi, esi
mov eax, dword [ebx]
test eax, eax
je 0x401858
push edi
test eax, eax
jns 0x401830
movzx eax, ax
push eax
push 0
push ebp
call fcn.00401a20
mov esi, eax
add esp, 0x10
test esi, esi
je 0x401847
push 0x13a
push esi
call fcn.00402ca0
mov edi, dword [esp + 0x58]
add esp, 8
jmp 0x4019cf
push 0x119
push 0x1b
call fcn.00402ca0
mov edi, dword [esp + 0x58]
add esp, 8
mov esi, eax
jmp 0x4019cf
add esi, 2
push 0
add eax, esi
push eax
push ebp
call fcn.00401a20
mov esi, eax
add esp, 0x10
test esi, esi
jne 0x4018b1
mov eax, dword [ebx + 4]
add ebx, 4
mov esi, dword [esp + 0x50]
add edi, 4
test eax, eax
jne 0x4017e5
mov edi, dword [esp + 0x2c]
add edi, 0x14
mov dword [esp + 0x2c], edi
cmp dword [edi], 0
jne 0x4017c0
mov edx, dword [esp + 0x10]
xor ebp, ebp
lea eax, [edx + esi]
mov dword [esp + 0x14], eax
cmp dword [esp + 0x18], ebp
jbe 0x401937
mov ebx, dword [esp + 0x30]
add ebx, 8
nop word [eax + eax]
mov ecx, dword [ebx + 0x1c]
mov eax, ecx
and eax, 0x40000000
test ecx, 0x20000000
je 0x4018e9
test eax, eax
je 0x4018e2
sar ecx, 0x1f
and ecx, 0x20
add ecx, 0x20
jmp 0x4018fd
push 0x143
push esi
call fcn.00402ca0
mov edi, dword [esp + 0x58]
add esp, 8
jmp 0x4019cf
push 0x12f
push 7
call fcn.00402ca0
mov edi, dword [esp + 0x58]
add esp, 8
mov esi, eax
jmp 0x4019cf
mov ecx, 0x10
jmp 0x4018fd
test eax, eax
je 0x4018f8
sar ecx, 0x1f
and ecx, 2
add ecx, 2
jmp 0x4018fd
mov ecx, 2
mov edi, dword [ebx]
dec edx
add edi, edx
xor edx, edx
mov eax, edi
div dword [esp + 0x10]
lea eax, [esp + 0x48]
push eax
push ecx
sub edi, edx
push edi
push dword [esp + 0x20]
call dword [0x420c4c]
test eax, eax
je 0x40196a
add dword [esp + 0x14], edi
inc ebp
mov edx, dword [esp + 0x10]
add ebx, 0x28
cmp ebp, dword [esp + 0x18]
jb 0x401890
mov ebx, dword [esp + 0x1c]
mov eax, dword [ebx + 0x28]
test eax, eax
je 0x401975
push 0
push 1
add eax, esi
push esi
mov dword [esp + 0x40], eax
call eax
test eax, eax
jne 0x401975
push 0x18d
push 0x33
call fcn.00402ca0
mov edi, dword [esp + 0x58]
add esp, 8
mov esi, eax
jmp 0x4019cf
mov edi, dword [esp + 0x50]
mov esi, 0x16
jmp 0x4019cf
lea eax, [esp + 0x44]
push eax
push 1
push 0
push esi
call fcn.00401a20
mov esi, eax
add esp, 0x10
test esi, esi
je 0x4019a1
push 0x194
push esi
call fcn.00402ca0
mov edi, dword [esp + 0x58]
add esp, 8
jmp 0x4019cf
mov ecx, dword [esp + 0x44]
mov edi, dword [esp + 0x50]
cmp ecx, edi
jb 0x4019ca
mov eax, dword [ebx + 0x50]
add eax, edi
cmp ecx, eax
ja 0x4019ca
push dword [esp + 0x58]
push dword [esp + 0x58]
push dword [0x420cdc]
call ecx
mov esi, eax
jmp 0x4019cf
mov esi, 0x35
test edi, edi
je 0x4019f0
mov eax, dword [esp + 0x34]
test eax, eax
je 0x4019e2
push 0
push 0
push edi
call eax
push 0x8000
push 0
push edi
call dword [0x420c44]
pop edi
mov eax, esi
pop esi
pop ebp
pop ebx
add esp, 0x3c
ret