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

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x38
mov ebp, dword [esp + 0x4c]
mov ecx, dword [esp + 0x50]
mov eax, ebp
movzx ebp, bp
shr eax, 0x10
cmp dword [esp + 0x54], 1
mov dword [esp + 0x2c], eax
je 0x444cba
test ecx, ecx
je 0x444f48
cmp dword [esp + 0x54], 0xf
jbe 0x444b44
lea eax, [ecx + 0x15b0]
cmp dword [esp + 0x54], 0x15af
mov dword [esp + 0x30], eax
jbe 0x444cf3
mov eax, dword [esp + 0x30]
lea ecx, [eax - 0x15b0]
mov eax, dword [esp + 0x54]
sub dword [esp + 0x54], 0x15b0
mov dword [esp + 0x34], eax
lea esi, [esi]
nop
movzx eax, byte [ecx]
add ecx, 0x10
lea esi, [eax + ebp]
movzx eax, byte [ecx - 0xf]
mov dword [esp], esi
add eax, esi
mov edi, eax
movzx eax, byte [ecx - 0xe]
mov dword [esp + 4], edi
mov ebx, eax
movzx eax, byte [ecx - 0xd]
add ebx, edi
mov edx, eax
movzx eax, byte [ecx - 0xc]
mov dword [esp + 8], ebx
add edx, ebx
mov ebp, eax
movzx eax, byte [ecx - 0xb]
mov dword [esp + 0xc], edx
add ebp, edx
add eax, ebp
mov dword [esp + 0x10], ebp
mov edi, eax
movzx eax, byte [ecx - 0xa]
mov dword [esp + 0x14], edi
add eax, edi
movzx edi, byte [ecx - 5]
mov esi, eax
movzx eax, byte [ecx - 9]
mov dword [esp + 0x18], esi
add eax, esi
movzx esi, byte [ecx - 4]
mov ebx, eax
movzx eax, byte [ecx - 8]
mov dword [esp + 0x1c], ebx
add eax, ebx
movzx ebx, byte [ecx - 3]
mov edx, eax
movzx eax, byte [ecx - 7]
mov dword [esp + 0x20], edx
add eax, edx
movzx edx, byte [ecx - 2]
mov ebp, eax
movzx eax, byte [ecx - 6]
mov dword [esp + 0x24], ebp
add eax, ebp
movzx ebp, byte [ecx - 1]
add edi, eax
mov dword [esp + 0x28], eax
mov eax, dword [esp]
add eax, dword [esp + 4]
add eax, dword [esp + 8]
add esi, edi
add eax, dword [esp + 0xc]
add eax, dword [esp + 0x10]
add ebx, esi
add eax, dword [esp + 0x14]
add eax, dword [esp + 0x18]
add edx, ebx
add eax, dword [esp + 0x1c]
add eax, dword [esp + 0x20]
add ebp, edx
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
cmp ecx, dword [esp + 0x30]
jne 0x444a00
mov eax, 0x80078071
mov edi, dword [esp + 0x2c]
mul ebp
shr edx, 0xf
imul eax, edx, 0xfff1
sub ebp, eax
mov eax, 0x80078071
mul edi
shr edx, 0xf
imul eax, edx, 0xfff1
sub edi, eax
lea eax, [ecx + 0x15b0]
cmp dword [esp + 0x54], 0x15af
mov dword [esp + 0x2c], edi
mov dword [esp + 0x30], eax
ja 0x4449e1
mov eax, dword [esp + 0x54]
test eax, eax
jne 0x444ce8
mov eax, dword [esp + 0x2c]
add esp, 0x38
shl eax, 0x10
pop ebx
or eax, ebp
pop esi
pop edi
pop ebp
ret
mov edx, dword [esp + 0x54]
test edx, edx
je 0x444c83
movzx eax, byte [ecx]
add ebp, eax
add dword [esp + 0x2c], ebp
cmp dword [esp + 0x54], 1
mov edi, dword [esp + 0x2c]
je 0x444c83
movzx eax, byte [ecx + 1]
add ebp, eax
add edi, ebp
cmp dword [esp + 0x54], 2
mov dword [esp + 0x2c], edi
je 0x444c83
movzx eax, byte [ecx + 2]
add ebp, eax
add edi, ebp
cmp dword [esp + 0x54], 3
mov dword [esp + 0x2c], edi
je 0x444c83
movzx eax, byte [ecx + 3]
add ebp, eax
add edi, ebp
cmp dword [esp + 0x54], 4
mov dword [esp + 0x2c], edi
je 0x444c83
movzx eax, byte [ecx + 4]
add ebp, eax
add edi, ebp
cmp dword [esp + 0x54], 5
mov dword [esp + 0x2c], edi
je 0x444c83
movzx eax, byte [ecx + 5]
add ebp, eax
add edi, ebp
cmp dword [esp + 0x54], 6
mov dword [esp + 0x2c], edi
je 0x444c83
movzx eax, byte [ecx + 6]
add ebp, eax
add edi, ebp
cmp dword [esp + 0x54], 7
mov dword [esp + 0x2c], edi
je 0x444c83
movzx eax, byte [ecx + 7]
add ebp, eax
add edi, ebp
cmp dword [esp + 0x54], 8
mov dword [esp + 0x2c], edi
je 0x444c83
movzx eax, byte [ecx + 8]
add ebp, eax
add edi, ebp
cmp dword [esp + 0x54], 9
mov dword [esp + 0x2c], edi
je 0x444c83
movzx eax, byte [ecx + 9]
add ebp, eax
add edi, ebp
cmp dword [esp + 0x54], 0xa
mov dword [esp + 0x2c], edi
je 0x444c83
movzx eax, byte [ecx + 0xa]
add ebp, eax
add edi, ebp
cmp dword [esp + 0x54], 0xb
mov dword [esp + 0x2c], edi
je 0x444c83
movzx eax, byte [ecx + 0xb]
add ebp, eax
add edi, ebp
cmp dword [esp + 0x54], 0xc
mov dword [esp + 0x2c], edi
je 0x444c83
movzx eax, byte [ecx + 0xc]
add ebp, eax
add edi, ebp
cmp dword [esp + 0x54], 0xd
mov dword [esp + 0x2c], edi
je 0x444c83
movzx eax, byte [ecx + 0xd]
add ebp, eax
add edi, ebp
cmp dword [esp + 0x54], 0xe
mov dword [esp + 0x2c], edi
je 0x444c83
movzx eax, byte [ecx + 0xe]
add ebp, eax
add edi, ebp
mov dword [esp + 0x2c], edi
cmp ebp, 0xfff0
jbe 0x444c91
sub ebp, 0xfff1
mov eax, dword [esp + 0x2c]
mov edx, 0x80078071
mov edi, dword [esp + 0x2c]
add esp, 0x38
pop ebx
pop esi
mul edx
shr edx, 0xf
imul eax, edx, 0xfff1
sub edi, eax
mov eax, edi
pop edi
shl eax, 0x10
or eax, ebp
pop ebp
ret
movzx eax, byte [ecx]
add ebp, eax
cmp ebp, 0xfff0
jbe 0x444ccd
sub ebp, 0xfff1
mov eax, dword [esp + 0x2c]
add eax, ebp
cmp eax, 0xfff0
jbe 0x444b37
sub eax, 0xfff1
jmp 0x444b37
cmp dword [esp + 0x54], 0xf
jbe 0x444f55
mov eax, dword [esp + 0x54]
sub eax, 0x10
shr eax, 4
mov dword [esp + 0x30], eax
add eax, 1
shl eax, 4
add eax, ecx
mov dword [esp + 0x28], eax
movzx eax, byte [ecx]
movzx edi, byte [ecx + 1]
add ecx, 0x10
movzx edx, byte [ecx - 0xe]
add eax, ebp
add edi, eax
lea esi, [edx + edi]
movzx edx, byte [ecx - 0xd]
add eax, edi
mov dword [esp], esi
add eax, dword [esp]
add edx, esi
mov esi, edx
movzx edx, byte [ecx - 0xc]
mov dword [esp + 4], esi
add eax, dword [esp + 4]
add edx, esi
mov ebx, edx
movzx edx, byte [ecx - 0xb]
mov dword [esp + 8], ebx
add eax, dword [esp + 8]
add edx, ebx
mov ebp, edx
movzx edx, byte [ecx - 0xa]
mov dword [esp + 0xc], ebp
add eax, dword [esp + 0xc]
add edx, ebp
mov esi, edx
movzx edx, byte [ecx - 9]
mov dword [esp + 0x10], esi
add eax, dword [esp + 0x10]
mov ebx, edx
movzx edx, byte [ecx - 8]
add ebx, esi
add edx, ebx
mov dword [esp + 0x14], ebx
movzx ebx, byte [ecx - 3]
mov ebp, edx
movzx edx, byte [ecx - 7]
add eax, dword [esp + 0x14]
mov dword [esp + 0x18], ebp
add edx, ebp
mov esi, edx
movzx edx, byte [ecx - 6]
mov dword [esp + 0x1c], esi
mov ebp, edx
movzx edx, byte [ecx - 5]
add ebp, esi
movzx esi, byte [ecx - 4]
add edx, ebp
mov dword [esp + 0x20], ebp
movzx ebp, byte [ecx - 1]
add esi, edx
mov dword [esp + 0x24], edx
movzx edx, byte [ecx - 2]
add eax, dword [esp + 0x18]
add eax, dword [esp + 0x1c]
add ebx, esi
add eax, dword [esp + 0x20]
add eax, dword [esp + 0x24]
add edx, ebx
add eax, esi
add ebp, edx
add eax, ebx
add eax, edx
add eax, ebp
add dword [esp + 0x2c], eax
cmp ecx, dword [esp + 0x28]
jne 0x444d0d
mov eax, dword [esp + 0x30]
mov edi, dword [esp + 0x54]
shl eax, 4
neg eax
lea eax, [edi + eax - 0x11]
and edi, 0xf
je 0x444f1a
mov esi, dword [esp + 0x28]
movzx edx, byte [esi]
add ebp, edx
add dword [esp + 0x2c], ebp
mov edi, dword [esp + 0x2c]
test eax, eax
je 0x444f1a
movzx edx, byte [esi + 1]
add ebp, edx
add edi, ebp
mov dword [esp + 0x2c], edi
cmp eax, 1
je 0x444f1a
movzx edx, byte [esi + 2]
add ebp, edx
add edi, ebp
mov dword [esp + 0x2c], edi
cmp eax, 2
je 0x444f1a
movzx edx, byte [esi + 3]
add ebp, edx
add edi, ebp
mov dword [esp + 0x2c], edi
cmp eax, 3
je 0x444f1a
movzx edx, byte [esi + 4]
add ebp, edx
add edi, ebp
mov dword [esp + 0x2c], edi
cmp eax, 4
je 0x444f1a
movzx edx, byte [esi + 5]
add ebp, edx
add edi, ebp
mov dword [esp + 0x2c], edi
cmp eax, 5
je 0x444f1a
movzx edx, byte [esi + 6]
add ebp, edx
add edi, ebp
mov dword [esp + 0x2c], edi
cmp eax, 6
je 0x444f1a
movzx edx, byte [esi + 7]
add ebp, edx
add edi, ebp
mov dword [esp + 0x2c], edi
cmp eax, 7
je 0x444f1a
movzx edx, byte [esi + 8]
add ebp, edx
add edi, ebp
mov dword [esp + 0x2c], edi
cmp eax, 8
je 0x444f1a
movzx edx, byte [esi + 9]
add ebp, edx
add edi, ebp
mov dword [esp + 0x2c], edi
cmp eax, 9
je 0x444f1a
movzx edx, byte [esi + 0xa]
add ebp, edx
add edi, ebp
mov dword [esp + 0x2c], edi
cmp eax, 0xa
je 0x444f1a
movzx edx, byte [esi + 0xb]
add ebp, edx
add edi, ebp
mov dword [esp + 0x2c], edi
cmp eax, 0xb
je 0x444f1a
movzx edx, byte [esi + 0xc]
add ebp, edx
add edi, ebp
mov dword [esp + 0x2c], edi
cmp eax, 0xc
je 0x444f1a
movzx edx, byte [esi + 0xd]
add ebp, edx
add edi, ebp
mov dword [esp + 0x2c], edi
cmp eax, 0xd
je 0x444f1a
movzx eax, byte [esi + 0xe]
add ebp, eax
add edi, ebp
mov dword [esp + 0x2c], edi
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
jmp 0x444b33
add esp, 0x38
mov eax, 1
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [esp + 0x34]
mov dword [esp + 0x28], ecx
sub eax, 0x15b1
jmp 0x444e00