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

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x40
mov ebp, dword [esp + 0x54]
mov ecx, dword [esp + 0x58]
mov eax, ebp
movzx ebp, bp
shr eax, 0x10
cmp dword [esp + 0x5c], 1
mov dword [esp + 0x2c], eax
je 0x4e9cb7
test ecx, ecx
je 0x4e9cec
cmp dword [esp + 0x5c], 0xf
ja 0x4e99de
mov eax, dword [esp + 0x5c]
test eax, eax
je 0x4e99a6
movzx eax, byte [ecx]
add ebp, eax
add dword [esp + 0x2c], ebp
cmp dword [esp + 0x5c], 1
mov esi, dword [esp + 0x2c]
je 0x4e99a6
movzx eax, byte [ecx + 1]
add ebp, eax
mov eax, esi
add eax, ebp
cmp dword [esp + 0x5c], 2
mov esi, eax
mov dword [esp + 0x2c], eax
je 0x4e99a6
movzx eax, byte [ecx + 2]
add ebp, eax
mov eax, esi
add eax, ebp
cmp dword [esp + 0x5c], 3
mov esi, eax
mov dword [esp + 0x2c], eax
je 0x4e99a6
movzx eax, byte [ecx + 3]
add ebp, eax
mov eax, esi
add eax, ebp
cmp dword [esp + 0x5c], 4
mov esi, eax
mov dword [esp + 0x2c], eax
je 0x4e99a6
movzx eax, byte [ecx + 4]
add ebp, eax
mov eax, esi
add eax, ebp
cmp dword [esp + 0x5c], 5
mov esi, eax
mov dword [esp + 0x2c], eax
je 0x4e99a6
movzx eax, byte [ecx + 5]
add ebp, eax
mov eax, esi
add eax, ebp
cmp dword [esp + 0x5c], 6
mov esi, eax
mov dword [esp + 0x2c], eax
je 0x4e99a6
movzx eax, byte [ecx + 6]
add ebp, eax
mov eax, esi
add eax, ebp
cmp dword [esp + 0x5c], 7
mov esi, eax
mov dword [esp + 0x2c], eax
je 0x4e99a6
movzx eax, byte [ecx + 7]
add ebp, eax
mov eax, esi
add eax, ebp
cmp dword [esp + 0x5c], 8
mov esi, eax
mov dword [esp + 0x2c], eax
je 0x4e99a6
movzx eax, byte [ecx + 8]
add ebp, eax
mov eax, esi
add eax, ebp
cmp dword [esp + 0x5c], 9
mov esi, eax
mov dword [esp + 0x2c], eax
je 0x4e99a6
movzx eax, byte [ecx + 9]
add ebp, eax
mov eax, esi
add eax, ebp
cmp dword [esp + 0x5c], 0xa
mov esi, eax
mov dword [esp + 0x2c], eax
je 0x4e99a6
movzx eax, byte [ecx + 0xa]
add ebp, eax
mov eax, esi
add eax, ebp
cmp dword [esp + 0x5c], 0xb
mov esi, eax
mov dword [esp + 0x2c], eax
je 0x4e99a6
movzx eax, byte [ecx + 0xb]
add ebp, eax
mov eax, esi
add eax, ebp
cmp dword [esp + 0x5c], 0xc
mov esi, eax
mov dword [esp + 0x2c], eax
je 0x4e99a6
movzx eax, byte [ecx + 0xc]
add ebp, eax
mov eax, esi
add eax, ebp
cmp dword [esp + 0x5c], 0xd
mov esi, eax
mov dword [esp + 0x2c], eax
je 0x4e99a6
movzx eax, byte [ecx + 0xd]
add ebp, eax
mov eax, esi
add eax, ebp
cmp dword [esp + 0x5c], 0xe
mov esi, eax
mov dword [esp + 0x2c], eax
je 0x4e99a6
movzx eax, byte [ecx + 0xe]
add ebp, eax
mov eax, esi
add eax, ebp
mov dword [esp + 0x2c], eax
lea eax, [ebp - 0xfff1]
cmp ebp, 0xfff1
mov edx, 0x80078071
mov esi, dword [esp + 0x2c]
cmovae ebp, eax
mov eax, dword [esp + 0x2c]
mul edx
shr edx, 0xf
imul eax, edx, 0xfff1
sub esi, eax
mov eax, esi
shl eax, 0x10
or eax, ebp
add esp, 0x40
pop ebx
pop esi
pop edi
pop ebp
ret
cmp dword [esp + 0x5c], 0x15af
jbe 0x4e9cf6
mov eax, dword [esp + 0x5c]
sub eax, 0x15b0
mov dword [esp + 0x34], eax
lea eax, [ecx + 0x15b0]
mov dword [esp + 0x30], eax
movzx eax, byte [ecx]
add eax, ebp
mov esi, eax
movzx eax, byte [ecx + 1]
mov dword [esp], esi
mov edi, eax
movzx eax, byte [ecx + 2]
add edi, esi
mov dword [esp + 4], edi
mov ebx, eax
movzx eax, byte [ecx + 3]
add ebx, edi
mov dword [esp + 8], ebx
mov edx, eax
movzx eax, byte [ecx + 4]
add edx, ebx
mov dword [esp + 0xc], edx
mov ebp, eax
movzx eax, byte [ecx + 5]
add ebp, edx
mov dword [esp + 0x10], ebp
add eax, ebp
mov esi, eax
movzx eax, byte [ecx + 6]
mov dword [esp + 0x14], esi
add eax, esi
movzx esi, byte [ecx + 0xc]
mov edi, eax
movzx eax, byte [ecx + 7]
mov dword [esp + 0x18], edi
add eax, edi
movzx edi, byte [ecx + 0xb]
mov ebx, eax
movzx eax, byte [ecx + 8]
mov dword [esp + 0x1c], ebx
add eax, ebx
movzx ebx, byte [ecx + 0xd]
mov edx, eax
movzx eax, byte [ecx + 9]
mov dword [esp + 0x20], edx
add eax, edx
movzx edx, byte [ecx + 0xe]
mov ebp, eax
movzx eax, byte [ecx + 0xa]
mov dword [esp + 0x24], ebp
add eax, ebp
movzx ebp, byte [ecx + 0xf]
add edi, eax
mov dword [esp + 0x28], eax
mov eax, dword [esp]
add eax, dword [esp + 4]
add esi, edi
add eax, dword [esp + 8]
add ebx, esi
add eax, dword [esp + 0xc]
add edx, ebx
add eax, dword [esp + 0x10]
add ebp, edx
add eax, dword [esp + 0x14]
add eax, dword [esp + 0x18]
add eax, dword [esp + 0x1c]
add eax, dword [esp + 0x20]
add eax, dword [esp + 0x24]
add eax, dword [esp + 0x28]
add eax, edi
add eax, esi
add ebx, eax
add edx, ebx
add edx, ebp
add dword [esp + 0x2c], edx
add ecx, 0x10
cmp ecx, dword [esp + 0x30]
jne 0x4e9a03
mov eax, 0x80078071
mov esi, dword [esp + 0x2c]
mul ebp
shr edx, 0xf
imul eax, edx, 0xfff1
sub ebp, eax
mov eax, 0x80078071
mul esi
shr edx, 0xf
imul eax, edx, 0xfff1
sub esi, eax
cmp dword [esp + 0x34], 0x15af
mov eax, dword [esp + 0x34]
mov dword [esp + 0x2c], esi
jbe 0x4e9b2a
mov dword [esp + 0x5c], eax
jmp 0x4e99ec
test eax, eax
je 0x4e9ca6
cmp eax, 0xf
jbe 0x4e9d03
sub eax, 0x10
mov edx, ecx
mov dword [esp + 0x58], ecx
mov dword [esp + 0x3c], eax
shr eax, 4
mov dword [esp + 0x38], eax
add eax, 1
shl eax, 4
add eax, ecx
mov dword [esp + 0x30], eax
movzx eax, byte [edx]
add edx, 0x10
add eax, ebp
mov esi, eax
movzx eax, byte [edx - 0xf]
mov dword [esp + 4], esi
mov edi, eax
movzx eax, byte [edx - 0xe]
add edi, esi
mov dword [esp + 8], edi
mov ebx, eax
movzx eax, byte [edx - 0xd]
add ebx, edi
mov dword [esp + 0xc], ebx
mov ecx, eax
movzx eax, byte [edx - 0xc]
add ecx, ebx
movzx ebx, byte [edx - 6]
mov dword [esp + 0x10], ecx
mov ebp, eax
movzx eax, byte [edx - 0xb]
add ebp, ecx
movzx ecx, byte [edx - 5]
mov dword [esp + 0x14], ebp
add eax, ebp
mov esi, eax
movzx eax, byte [edx - 0xa]
mov dword [esp + 0x18], esi
add eax, esi
movzx esi, byte [edx - 7]
mov edi, eax
movzx eax, byte [edx - 9]
mov dword [esp + 0x1c], edi
add eax, edi
movzx edi, byte [edx - 8]
mov dword [esp + 0x20], eax
add edi, eax
movzx eax, byte [edx - 4]
add esi, edi
add ebx, esi
add ecx, ebx
lea ebp, [eax + ecx]
movzx eax, byte [edx - 3]
mov dword [esp], ebp
mov ebp, dword [esp]
add ebp, eax
movzx eax, byte [edx - 2]
mov dword [esp + 0x24], ebp
add eax, ebp
movzx ebp, byte [edx - 1]
mov dword [esp + 0x28], eax
add ebp, eax
mov eax, dword [esp + 4]
add eax, dword [esp + 8]
add eax, dword [esp + 0xc]
add eax, dword [esp + 0x10]
add eax, dword [esp + 0x14]
add eax, dword [esp + 0x18]
add eax, dword [esp + 0x1c]
add eax, dword [esp + 0x20]
add eax, edi
add eax, esi
add eax, ebx
add eax, ecx
add eax, dword [esp]
add eax, dword [esp + 0x24]
add eax, dword [esp + 0x28]
add eax, ebp
add dword [esp + 0x2c], eax
cmp edx, dword [esp + 0x30]
jne 0x4e9b5b
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x58]
mov esi, dword [esp + 0x34]
and eax, 0xfffffff0
lea ecx, [ecx + eax + 0x10]
mov eax, dword [esp + 0x38]
shl eax, 4
neg eax
lea eax, [esi + eax - 0x11]
and esi, 0xf
je 0x4e9c7d
lea edx, [ecx + eax + 1]
mov eax, dword [esp + 0x2c]
add ecx, 1
movzx ebx, byte [ecx - 1]
add ebp, ebx
add eax, ebp
cmp ecx, edx
jne 0x4e9c6a
mov dword [esp + 0x2c], eax
mov eax, ebp
mov ecx, 0x80078071
mul ecx
mov eax, edx
shr eax, 0xf
imul eax, eax, 0xfff1
sub ebp, eax
mov eax, dword [esp + 0x2c]
mul ecx
shr edx, 0xf
imul eax, edx, 0xfff1
sub dword [esp + 0x2c], eax
mov eax, dword [esp + 0x2c]
add esp, 0x40
pop ebx
pop esi
shl eax, 0x10
or eax, ebp
pop edi
pop ebp
ret
movzx eax, byte [ecx]
add ebp, eax
lea eax, [ebp - 0xfff1]
cmp ebp, 0xfff1
cmovae ebp, eax
mov eax, dword [esp + 0x2c]
add eax, ebp
lea edx, [eax - 0xfff1]
cmp eax, 0xfff1
cmovae eax, edx
add esp, 0x40
shl eax, 0x10
pop ebx
or eax, ebp
pop esi
pop edi
pop ebp
ret
mov eax, 1
jmp 0x4e99d6
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x34], eax
jmp 0x4e9b3b
mov eax, dword [esp + 0x5c]
sub eax, 0x15b1
jmp 0x4e9c62