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

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x3c
mov ebp, dword [esp + 0x50]
mov edi, dword [esp + 0x54]
mov eax, ebp
and ebp, 0xffff
shr eax, 0x10
cmp dword [esp + 0x58], 1
mov dword [esp + 0x2c], eax
je 0x43de3b
test edi, edi
je 0x43dfe9
cmp dword [esp + 0x58], 0xf
ja 0x43dce4
mov edx, dword [esp + 0x58]
test edx, edx
je 0x43dcac
mov edx, dword [esp + 0x58]
mov eax, dword [esp + 0x2c]
add edx, edi
movzx ecx, byte [edi]
add edi, 1
add ebp, ecx
add eax, ebp
cmp edi, edx
jne 0x43dc9a
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x2c]
cmp ebp, 0xfff1
mov edx, 0x80078071
lea ecx, [ebp - 0xfff1]
cmovb ecx, ebp
mul edx
mov eax, dword [esp + 0x2c]
shr edx, 0xf
imul edx, edx, 0xfff1
sub eax, edx
shl eax, 0x10
or ecx, eax
add esp, 0x3c
mov eax, ecx
pop ebx
pop esi
pop edi
pop ebp
ret
cmp dword [esp + 0x58], 0x15af
jbe 0x43de7d
sub dword [esp + 0x58], 0x15b0
lea eax, [edi + 0x15b0]
mov dword [esp + 0x30], eax
mov eax, edi
movzx edi, byte [eax]
movzx esi, byte [eax + 0xb]
movzx ebx, byte [eax + 0xc]
movzx ecx, byte [eax + 0xd]
add ebp, edi
movzx edi, byte [eax + 1]
mov dword [esp], ebp
movzx edx, byte [eax + 0xe]
add edi, ebp
movzx ebp, byte [eax + 0xf]
mov dword [esp + 4], edi
movzx edi, byte [eax + 2]
add edi, dword [esp + 4]
mov dword [esp + 8], edi
movzx edi, byte [eax + 3]
add edi, dword [esp + 8]
mov dword [esp + 0xc], edi
movzx edi, byte [eax + 4]
add edi, dword [esp + 0xc]
mov dword [esp + 0x10], edi
movzx edi, byte [eax + 5]
add edi, dword [esp + 0x10]
mov dword [esp + 0x14], edi
movzx edi, byte [eax + 6]
add edi, dword [esp + 0x14]
mov dword [esp + 0x18], edi
movzx edi, byte [eax + 7]
add edi, dword [esp + 0x18]
mov dword [esp + 0x1c], edi
movzx edi, byte [eax + 8]
add edi, dword [esp + 0x1c]
mov dword [esp + 0x20], edi
movzx edi, byte [eax + 9]
add edi, dword [esp + 0x20]
mov dword [esp + 0x24], edi
movzx edi, byte [eax + 0xa]
add eax, 0x10
add edi, dword [esp + 0x24]
add esi, edi
mov dword [esp + 0x28], edi
mov edi, dword [esp + 4]
add ebx, esi
add edi, dword [esp]
add ecx, ebx
add edi, dword [esp + 8]
add edx, ecx
add edi, dword [esp + 0xc]
add ebp, edx
add edi, dword [esp + 0x10]
add edi, dword [esp + 0x14]
add edi, dword [esp + 0x18]
add edi, dword [esp + 0x1c]
add edi, dword [esp + 0x20]
add edi, dword [esp + 0x24]
add edi, dword [esp + 0x28]
add edi, esi
add edi, ebx
add ecx, edi
add edx, ecx
add edx, ebp
add dword [esp + 0x2c], edx
cmp eax, dword [esp + 0x30]
jne 0x43dd06
mov edi, eax
mov eax, 0x80078071
mul ebp
mov eax, 0x80078071
shr edx, 0xf
imul edx, edx, 0xfff1
sub ebp, edx
mul dword [esp + 0x2c]
shr edx, 0xf
imul edx, edx, 0xfff1
sub dword [esp + 0x2c], edx
cmp dword [esp + 0x58], 0x15af
ja 0x43dcf2
mov eax, dword [esp + 0x58]
test eax, eax
jne 0x43de72
mov ecx, dword [esp + 0x2c]
shl ecx, 0x10
or ecx, ebp
add esp, 0x3c
mov eax, ecx
pop ebx
pop esi
pop edi
pop ebp
ret
movzx eax, byte [edi]
add ebp, eax
cmp ebp, 0xfff1
lea eax, [ebp - 0xfff1]
cmovae ebp, eax
mov eax, dword [esp + 0x2c]
add eax, ebp
cmp eax, 0xfff1
lea ecx, [eax - 0xfff1]
cmovb ecx, eax
add esp, 0x3c
shl ecx, 0x10
or ecx, ebp
pop ebx
mov eax, ecx
pop esi
pop edi
pop ebp
ret
cmp dword [esp + 0x58], 0xf
jbe 0x43dff3
mov eax, dword [esp + 0x58]
mov edx, edi
mov dword [esp + 0x38], edi
sub eax, 0x10
shr eax, 4
mov dword [esp + 0x34], eax
shl eax, 4
lea eax, [edi + eax + 0x10]
mov dword [esp + 0x30], eax
movzx eax, byte [edx]
movzx esi, byte [edx + 8]
movzx ebx, byte [edx + 9]
movzx ecx, byte [edx + 0xa]
add ebp, eax
movzx eax, byte [edx + 1]
movzx edi, byte [edx + 0xc]
mov dword [esp], ebp
add eax, ebp
mov dword [esp + 4], eax
movzx eax, byte [edx + 2]
add eax, dword [esp + 4]
mov dword [esp + 8], eax
movzx eax, byte [edx + 3]
add eax, dword [esp + 8]
mov dword [esp + 0xc], eax
movzx eax, byte [edx + 4]
add eax, dword [esp + 0xc]
mov dword [esp + 0x10], eax
movzx eax, byte [edx + 5]
add eax, dword [esp + 0x10]
mov dword [esp + 0x14], eax
movzx eax, byte [edx + 6]
add eax, dword [esp + 0x14]
mov dword [esp + 0x18], eax
movzx eax, byte [edx + 7]
add eax, dword [esp + 0x18]
add esi, eax
mov dword [esp + 0x1c], eax
movzx eax, byte [edx + 0xb]
add ebx, esi
add ecx, ebx
add eax, ecx
add edi, eax
mov dword [esp + 0x20], edi
movzx edi, byte [edx + 0xd]
add edi, dword [esp + 0x20]
mov dword [esp + 0x24], edi
movzx edi, byte [edx + 0xe]
add edi, dword [esp + 0x24]
mov dword [esp + 0x28], edi
movzx ebp, byte [edx + 0xf]
add edx, 0x10
add ebp, edi
mov edi, dword [esp + 4]
add edi, dword [esp]
add edi, dword [esp + 8]
add edi, dword [esp + 0xc]
add edi, dword [esp + 0x10]
add edi, dword [esp + 0x14]
add edi, dword [esp + 0x18]
add edi, dword [esp + 0x1c]
add esi, edi
add ebx, esi
add ecx, ebx
add eax, ecx
add eax, dword [esp + 0x20]
add eax, dword [esp + 0x24]
add eax, dword [esp + 0x28]
add eax, ebp
add dword [esp + 0x2c], eax
cmp edx, dword [esp + 0x30]
jne 0x43de9c
mov eax, dword [esp + 0x34]
mov edx, dword [esp + 0x58]
mov edi, dword [esp + 0x38]
add eax, 1
shl eax, 4
and edx, 0xf
add edi, eax
test edx, edx
lea eax, [edx - 1]
je 0x43dfb4
lea edx, [edi + eax + 1]
mov eax, dword [esp + 0x2c]
movzx ecx, byte [edi]
add edi, 1
add ebp, ecx
add eax, ebp
cmp edi, edx
jne 0x43dfa2
mov dword [esp + 0x2c], eax
mov ecx, 0x80078071
mov eax, ebp
mul ecx
mov eax, dword [esp + 0x2c]
shr edx, 0xf
imul edx, edx, 0xfff1
sub ebp, edx
mul ecx
shr edx, 0xf
imul edx, edx, 0xfff1
sub dword [esp + 0x2c], edx
mov ecx, dword [esp + 0x2c]
shl ecx, 0x10
or ecx, ebp
jmp 0x43de31
mov ecx, 1
jmp 0x43dcda
mov eax, dword [esp + 0x58]
sub eax, 1
jmp 0x43df9a