Function at 0x66e280
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 0x66e3e3
test esi, esi
mov ebp, 1
je 0x66e39a
cmp edi, 0xf
jbe 0x66e3a1
cmp edi, 0x15af
mov ebp, 0x80078071
jbe 0x66e41d
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 0x66e2d7
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 0x66e2cb
test edi, edi
jne 0x66e414
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 0x66e3b4
movzx eax, byte [esi]
add esi, 1
add ecx, eax
add ebx, ecx
sub edi, 1
jne 0x66e3a5
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 0x66e4be
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 0x66e421
lea eax, [edi - 0x10]
and eax, 0xfffffff0
and edi, 0xf
lea esi, [esi + eax + 0x10]
je 0x66e4d5
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 0x66e4c6
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 0x66e39a