Function at 0x4357e8
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
shr ebx, 0x10
and ecx, 0xffff
cmp edi, 1
je 0x435a0a
test esi, esi
mov eax, 1
je 0x435857
cmp edi, 0xf
ja 0x43585c
dec edi
cmp edi, 0xffffffff
je 0x43582e
movzx edx, byte [esi]
dec edi
inc esi
add ecx, edx
add ebx, ecx
cmp edi, 0xffffffff
jne 0x435820
cmp ecx, 0xfff0
jbe 0x43583c
sub ecx, 0xfff1
mov eax, ebx
mov esi, 0x80078071
mul esi
mov eax, ebx
shr edx, 0xf
imul edx, edx, 0xfff1
sub eax, edx
shl eax, 0x10
or eax, ecx
pop ebx
pop esi
pop edi
pop ebp
ret
cmp edi, 0x15af
jbe 0x43592b
mov ebp, 0x80078071
sub edi, 0x15b0
mov edx, 0x15b
movzx eax, byte [esi]
add ecx, eax
add ebx, ecx
movzx eax, byte [esi + 1]
add ecx, eax
add ebx, ecx
movzx eax, byte [esi + 2]
add ecx, eax
add ebx, ecx
movzx eax, byte [esi + 3]
add ecx, eax
add ebx, ecx
movzx eax, byte [esi + 4]
add ecx, eax
add ebx, ecx
movzx eax, byte [esi + 5]
add ecx, eax
add ebx, ecx
movzx eax, byte [esi + 6]
add ecx, eax
add ebx, ecx
movzx eax, byte [esi + 7]
add ecx, eax
add ebx, ecx
movzx eax, byte [esi + 8]
add ecx, eax
add ebx, ecx
movzx eax, byte [esi + 9]
add ecx, eax
add ebx, ecx
movzx eax, byte [esi + 0xa]
add ecx, eax
add ebx, ecx
movzx eax, byte [esi + 0xb]
add ecx, eax
add ebx, ecx
movzx eax, byte [esi + 0xc]
add ecx, eax
add ebx, ecx
movzx eax, byte [esi + 0xd]
add ecx, eax
add ebx, ecx
movzx eax, byte [esi + 0xe]
add ecx, eax
add ebx, ecx
movzx eax, byte [esi + 0xf]
add esi, 0x10
add ecx, eax
add ebx, ecx
dec edx
jne 0x435878
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 0x43586d
test edi, edi
je 0x435a03
cmp edi, 0xf
jbe 0x4359ca
movzx edx, byte [esi]
sub edi, 0x10
movzx ebp, byte [esi + 1]
add ecx, edx
add ebx, ecx
movzx edx, byte [esi + 2]
add ecx, ebp
add ebx, ecx
movzx ebp, byte [esi + 3]
add ecx, edx
add ebx, ecx
movzx edx, byte [esi + 4]
add ecx, ebp
add ebx, ecx
movzx ebp, byte [esi + 5]
add ecx, edx
add ebx, ecx
movzx edx, byte [esi + 6]
add ecx, ebp
add ebx, ecx
movzx ebp, byte [esi + 7]
add ecx, edx
add ebx, ecx
movzx edx, byte [esi + 8]
add ecx, ebp
add ebx, ecx
movzx ebp, byte [esi + 9]
add ecx, edx
add ebx, ecx
movzx edx, byte [esi + 0xa]
add ecx, ebp
add ebx, ecx
movzx ebp, byte [esi + 0xb]
add ecx, edx
add ebx, ecx
movzx edx, byte [esi + 0xc]
add ecx, ebp
add ebx, ecx
movzx ebp, byte [esi + 0xd]
add ecx, edx
add ebx, ecx
movzx edx, byte [esi + 0xe]
add ecx, ebp
add ebx, ecx
movzx ebp, byte [esi + 0xf]
add ecx, edx
add ebx, ecx
add ecx, ebp
add ebx, ecx
add esi, 0x10
cmp edi, 0xf
ja 0x43593c
dec edi
cmp edi, 0xffffffff
je 0x4359de
movzx ebp, byte [esi]
dec edi
inc esi
add ecx, ebp
add ebx, ecx
cmp edi, 0xffffffff
jne 0x4359d0
mov eax, ecx
mov ebp, 0x80078071
mul ebp
mov eax, edx
shr eax, 0xf
imul eax, eax, 0xfff1
sub ecx, eax
mov eax, ebx
mul ebp
shr edx, 0xf
imul edx, edx, 0xfff1
sub ebx, edx
mov eax, ebx
jmp 0x435852
movzx edx, byte [esi]
add ecx, edx
cmp ecx, 0xfff0
jbe 0x435a1d
sub ecx, 0xfff1
add ebx, ecx
cmp ebx, 0xfff0
jbe 0x435a03
sub ebx, 0xfff1
jmp 0x435a03