Function at 0x10048890
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 0x100489f3
test esi, esi
mov ebp, 1
je 0x100489aa
cmp edi, 0xf
jbe 0x100489b1
cmp edi, 0x15af
mov ebp, 0x80078071
jbe 0x10048a2d
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 0x100488e7
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 0x100488db
test edi, edi
jne 0x10048a24
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 0x100489c4
movzx eax, byte [esi]
add esi, 1
add ecx, eax
add ebx, ecx
sub edi, 1
jne 0x100489b5
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 0x10048ace
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 0x10048a31
lea eax, [edi - 0x10]
and eax, 0xfffffff0
and edi, 0xf
lea esi, [esi + eax + 0x10]
je 0x10048ae5
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 0x10048ad6
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 0x100489aa