Function at 0x40e6e0
Capabilities:
Compute adler32 checksum
Enumerate pe sections

Disassembly:
push ebp
push edi
push esi
push ebx
mov ecx, dword [esp + 0x14]
mov edi, dword [esp + 0x1c]
mov esi, dword [esp + 0x18]
mov ebx, ecx
and ecx, 0xffff
shr ebx, 0x10
cmp edi, 1
je 0x40e843
test esi, esi
mov ebp, 1
je 0x40e7fa
cmp edi, 0xf
jbe 0x40e801
cmp edi, 0x15af
mov ebp, 0x80078071
jbe 0x40e87d
sub edi, 0x15b0
lea eax, [esi + 0x15b0]
movzx edx, byte [esi]
add ecx, edx
movzx edx, byte [esi + 1]
add ebx, ecx
add ecx, edx
movzx edx, byte [esi + 2]
add ebx, ecx
add ecx, edx
movzx edx, byte [esi + 3]
add ebx, ecx
add ecx, edx
movzx edx, byte [esi + 4]
add ebx, ecx
add ecx, edx
movzx edx, byte [esi + 5]
add ebx, ecx
add ecx, edx
movzx edx, byte [esi + 6]
add ebx, ecx
add ecx, edx
movzx edx, byte [esi + 7]
add ebx, ecx
add ecx, edx
movzx edx, byte [esi + 8]
add ebx, ecx
add ecx, edx
movzx edx, byte [esi + 9]
add ebx, ecx
add ecx, edx
movzx edx, byte [esi + 0xa]
add ebx, ecx
add ecx, edx
movzx edx, byte [esi + 0xb]
add ebx, ecx
add ecx, edx
movzx edx, byte [esi + 0xc]
add ebx, ecx
add ecx, edx
movzx edx, byte [esi + 0xd]
add ebx, ecx
add ecx, edx
movzx edx, byte [esi + 0xe]
add ebx, ecx
add ecx, edx
movzx edx, byte [esi + 0xf]
add esi, 0x10
add ebx, ecx
add ecx, edx
add ebx, ecx
cmp esi, eax
jne 0x40e737
mov eax, ecx
mul ebp
mov eax, ebx
shr edx, 0xf
imul edx, edx, 0xfff1
sub ecx, edx
mul ebp
shr edx, 0xf
imul edx, edx, 0xfff1
sub ebx, edx
cmp edi, 0x15af
ja 0x40e72b
test edi, edi
jne 0x40e874
mov ebp, ebx
shl ebp, 0x10
or ebp, ecx
pop ebx
mov eax, ebp
pop esi
pop edi
pop ebp
ret
test edi, edi
je 0x40e814
movzx eax, byte [esi]
add esi, 1
add ecx, eax
add ebx, ecx
sub edi, 1
jne 0x40e805
cmp ecx, 0xfff1
mov eax, ebx
lea ebp, [ecx - 0xfff1]
mov edx, 0x80078071
cmovb ebp, ecx
mul edx
shr edx, 0xf
imul edx, edx, 0xfff1
sub ebx, edx
shl ebx, 0x10
or ebp, ebx
mov eax, ebp
pop ebx
pop esi
pop edi
pop ebp
ret
movzx eax, byte [esi]
add ecx, eax
cmp ecx, 0xfff1
lea eax, [ecx - 0xfff1]
cmovae ecx, eax
add ebx, ecx
cmp ebx, 0xfff1
lea ebp, [ebx - 0xfff1]
cmovb ebp, ebx
shl ebp, 0x10
or ebp, ecx
pop ebx
mov eax, ebp
pop esi
pop edi
pop ebp
ret
cmp edi, 0xf
jbe 0x40e91e
mov edx, edi
mov eax, esi
movzx ebp, byte [eax]
sub edx, 0x10
add ecx, ebp
movzx ebp, byte [eax + 1]
add ebx, ecx
add ecx, ebp
movzx ebp, byte [eax + 2]
add ebx, ecx
add ecx, ebp
movzx ebp, byte [eax + 3]
add ebx, ecx
add ecx, ebp
movzx ebp, byte [eax + 4]
add ebx, ecx
add ecx, ebp
movzx ebp, byte [eax + 5]
add ebx, ecx
add ecx, ebp
movzx ebp, byte [eax + 6]
add ebx, ecx
add ecx, ebp
movzx ebp, byte [eax + 7]
add ebx, ecx
add ecx, ebp
movzx ebp, byte [eax + 8]
add ebx, ecx
add ecx, ebp
movzx ebp, byte [eax + 9]
add ebx, ecx
add ecx, ebp
movzx ebp, byte [eax + 0xa]
add ebx, ecx
add ecx, ebp
movzx ebp, byte [eax + 0xb]
add ebx, ecx
add ecx, ebp
movzx ebp, byte [eax + 0xc]
add ebx, ecx
add ecx, ebp
movzx ebp, byte [eax + 0xd]
add ebx, ecx
add ecx, ebp
movzx ebp, byte [eax + 0xe]
add ebx, ecx
add ecx, ebp
movzx ebp, byte [eax + 0xf]
add ebx, ecx
add ecx, ebp
add ebx, ecx
add eax, 0x10
cmp edx, 0xf
ja 0x40e881
lea eax, [edi - 0x10]
and eax, 0xfffffff0
and edi, 0xf
lea esi, [esi + eax + 0x10]
je 0x40e935
sub edi, 1
xor eax, eax
add edi, 1
movzx edx, byte [esi + eax]
add eax, 1
add ecx, edx
add ebx, ecx
cmp eax, edi
jne 0x40e926
mov eax, ecx
mov esi, 0x80078071
mul esi
mov eax, ebx
shr edx, 0xf
imul edx, edx, 0xfff1
sub ecx, edx
mul esi
shr edx, 0xf
imul edx, edx, 0xfff1
sub ebx, edx
mov ebp, ebx
shl ebp, 0x10
or ebp, ecx
jmp 0x40e7fa