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

Disassembly:
push ebp
push ebx
push edi
push esi
mov edi, dword [esp + 0x1c]
mov ebx, dword [esp + 0x18]
mov eax, dword [esp + 0x14]
cmp edi, 0x40
jb 0x4fa62d
test ebx, ebx
je 0x4fa62d
mov ecx, dword [0x537bc8]
cmp dword [ecx], 0
je 0x4fa62d
pop esi
pop edi
pop ebx
pop ebp
jmp 0x51c320
mov esi, eax
movzx ecx, ax
shr esi, 0x10
cmp edi, 1
jne 0x4fa66d
movzx eax, byte [ebx]
lea edx, [ecx + eax]
lea eax, [ecx + eax - 0xfff1]
cmp edx, 0xfff0
cmovbe eax, edx
add esi, eax
mov ecx, esi
shl ecx, 0x10
cmp esi, 0xfff0
lea esi, [ecx + 0xf0000]
cmovbe esi, ecx
or esi, eax
jmp 0x4fa8f3
test ebx, ebx
je 0x4fa6b8
cmp edi, 0x10
jae 0x4fa6cf
test edi, edi
je 0x4fa68b
nop word [eax + eax]
movzx eax, byte [ebx]
inc ebx
add ecx, eax
add esi, ecx
dec edi
jne 0x4fa680
lea edi, [ecx - 0xfff1]
cmp ecx, 0xfff0
mov edx, 0x80078071
mov eax, esi
cmovbe edi, ecx
mul edx
shr edx, 0xf
imul eax, edx, 0xfff1
sub esi, eax
shl esi, 0x10
or esi, edi
jmp 0x4fa8f3
mov esi, 1
test edi, edi
jne 0x4fa8f3
call fcn.004fbb80
jmp 0x4fa8f3
cmp edi, 0x15b0
jb 0x4fa820
mov ebp, 0x80078071
jmp 0x4fa720
mov eax, ecx
add ebx, 0x15b0
mul ebp
shr edx, 0xf
imul eax, edx, 0xfff1
sub ecx, eax
mov eax, esi
mul ebp
shr edx, 0xf
imul eax, edx, 0xfff1
sub esi, eax
cmp edi, 0x15af
jbe 0x4fa800
add edi, 0xffffea50
mov eax, 0xffffea60
nop dword [eax + eax]
movzx edx, byte [ebx + eax + 0x15a0]
add edx, ecx
movzx ecx, byte [ebx + eax + 0x15a1]
add esi, edx
add ecx, edx
movzx edx, byte [ebx + eax + 0x15a2]
add esi, ecx
add edx, ecx
movzx ecx, byte [ebx + eax + 0x15a3]
add esi, edx
add ecx, edx
movzx edx, byte [ebx + eax + 0x15a4]
add esi, ecx
add edx, ecx
movzx ecx, byte [ebx + eax + 0x15a5]
add esi, edx
add ecx, edx
movzx edx, byte [ebx + eax + 0x15a6]
add esi, ecx
add edx, ecx
movzx ecx, byte [ebx + eax + 0x15a7]
add esi, edx
add ecx, edx
movzx edx, byte [ebx + eax + 0x15a8]
add esi, ecx
add edx, ecx
movzx ecx, byte [ebx + eax + 0x15a9]
add esi, edx
add ecx, edx
movzx edx, byte [ebx + eax + 0x15aa]
add esi, ecx
add edx, ecx
movzx ecx, byte [ebx + eax + 0x15ab]
add esi, edx
add ecx, edx
movzx edx, byte [ebx + eax + 0x15ac]
add esi, ecx
add edx, ecx
movzx ecx, byte [ebx + eax + 0x15ad]
add esi, edx
add ecx, edx
movzx edx, byte [ebx + eax + 0x15ae]
add esi, ecx
add edx, ecx
movzx ecx, byte [ebx + eax + 0x15af]
add esi, edx
add ecx, edx
add esi, ecx
test eax, eax
je 0x4fa6f0
add eax, 0x10
jmp 0x4fa730
test edi, edi
je 0x4fa8ee
cmp edi, 0x10
jb 0x4fa8c0
nop word cs:[eax + eax]
nop dword [eax + eax]
movzx eax, byte [ebx]
movzx edx, byte [ebx + 2]
movzx ebp, byte [ebx + 4]
add edi, 0xfffffff0
add eax, ecx
movzx ecx, byte [ebx + 1]
add esi, eax
add ecx, eax
add esi, ecx
add edx, ecx
movzx ecx, byte [ebx + 3]
add esi, edx
add ecx, edx
movzx edx, byte [ebx + 6]
add esi, ecx
add ebp, ecx
movzx ecx, byte [ebx + 5]
add esi, ebp
add ecx, ebp
movzx ebp, byte [ebx + 8]
add esi, ecx
add edx, ecx
movzx ecx, byte [ebx + 7]
add esi, edx
add ecx, edx
movzx edx, byte [ebx + 0xa]
add esi, ecx
add ebp, ecx
movzx ecx, byte [ebx + 9]
add esi, ebp
add ecx, ebp
movzx ebp, byte [ebx + 0xc]
add esi, ecx
add edx, ecx
movzx ecx, byte [ebx + 0xb]
add esi, edx
add ecx, edx
movzx edx, byte [ebx + 0xe]
add esi, ecx
add ebp, ecx
movzx ecx, byte [ebx + 0xd]
add esi, ebp
add ecx, ebp
add esi, ecx
add edx, ecx
movzx ecx, byte [ebx + 0xf]
add ebx, 0x10
add esi, edx
add ecx, edx
add esi, ecx
cmp edi, 0xf
ja 0x4fa820
test edi, edi
je 0x4fa8cb
nop word cs:[eax + eax]
nop dword [eax]
movzx eax, byte [ebx]
inc ebx
add ecx, eax
add esi, ecx
dec edi
jne 0x4fa8c0
mov edi, 0x80078071
mov eax, ecx
mul edi
shr edx, 0xf
imul eax, edx, 0xfff1
sub ecx, eax
mov eax, esi
mul edi
shr edx, 0xf
imul eax, edx, 0xfff1
sub esi, eax
shl esi, 0x10
or esi, ecx
mov eax, esi
pop esi
pop edi
pop ebx
pop ebp
ret
jmp 0x4fa600
push ebp
push ebx
push edi
push esi
push eax
mov edx, dword [esp + 0x20]
mov ecx, dword [esp + 0x18]
mov edi, dword [esp + 0x1c]
mov ebp, edx
movzx eax, cx
and edx, 0x1f
shr ecx, 0x10
shr ebp, 5
mov dword [esp], edx
test ebp, ebp
je 0x51c452
nop word [eax + eax]
cmp ebp, 0xad
mov ebx, 0xad
mov edx, eax
movd xmm4, ecx
pxor xmm6, xmm6
mov esi, edi
cmovb ebx, ebp
mov ecx, ebx
imul edx, ebx
movd xmm5, edx
shl ecx, 5
mov edx, ebx
nop dword [eax + eax]
movdqu xmm1, xmmword [esi]
movdqu xmm3, xmmword [esi + 0x10]
movdqa xmm7, xmm6
pxor xmm2, xmm2
add esi, 0x20
dec edx
paddd xmm5, xmm7
movdqa xmm0, xmm1
movdqa xmm6, xmm3
psadbw xmm0, xmm2
psadbw xmm6, xmm2
movdqa xmm2, xmmword [0x53caa0]
paddd xmm6, xmm0
movdqa xmm0, xmmword [0x53ca90]
paddd xmm6, xmm7
pmaddubsw xmm3, xmm2
movdqa xmm2, xmmword [0x53ca80]
pmaddwd xmm3, xmm0
paddd xmm4, xmm3
pmaddubsw xmm1, xmm2
pmaddwd xmm1, xmm0
paddd xmm4, xmm1
jne 0x51c380
pshufd xmm0, xmm6, 0xb1
pslld xmm5, 5
mov edx, 0x80078071
add edi, ecx
paddd xmm0, xmm6
paddd xmm4, xmm5
pshufd xmm1, xmm0, 0x4e
paddd xmm1, xmm0
pshufd xmm0, xmm4, 0xb1
movd esi, xmm1
paddd xmm0, xmm4
add esi, eax
pshufd xmm1, xmm0, 0x4e
mov eax, esi
paddd xmm1, xmm0
mul edx
movd ecx, xmm1
shr edx, 0xf
imul eax, edx, 0xfff1
mov edx, 0x80078071
sub esi, eax
mov eax, ecx
mul edx
shr edx, 0xf
imul eax, edx, 0xfff1
sub ecx, eax
sub ebp, ebx
mov eax, esi
jne 0x51c350
jmp 0x51c454
mov esi, eax
mov ebx, dword [esp]
test ebx, ebx
je 0x51c51e
cmp ebx, 0x10
jb 0x51c4f0
movzx eax, byte [edi]
movzx edx, byte [edi + 2]
movzx ebp, byte [edi + 3]
add esi, eax
movzx eax, byte [edi + 1]
add ecx, esi
add eax, esi
movzx esi, byte [edi + 5]
add edx, eax
add ecx, eax
add ecx, edx
add ebp, edx
movzx edx, byte [edi + 4]
add ecx, ebp
add edx, ebp
movzx ebp, byte [edi + 7]
add ecx, edx
add esi, edx
movzx edx, byte [edi + 6]
add ecx, esi
add edx, esi
movzx esi, byte [edi + 9]
add ecx, edx
add ebp, edx
movzx edx, byte [edi + 8]
add ecx, ebp
add edx, ebp
movzx ebp, byte [edi + 0xb]
add ecx, edx
add esi, edx
movzx edx, byte [edi + 0xa]
add ecx, esi
add edx, esi
movzx esi, byte [edi + 0xd]
add ecx, edx
add ebp, edx
movzx edx, byte [edi + 0xc]
add ecx, ebp
add edx, ebp
movzx ebp, byte [edi + 0xe]
add esi, edx
add ecx, edx
add ecx, esi
add ebp, esi
movzx esi, byte [edi + 0xf]
add ecx, ebp
add esi, ebp
add ecx, esi
add ebx, 0xfffffff0
je 0x51c4fb
add edi, 0x10
nop
movzx eax, byte [edi]
inc edi
add esi, eax
add ecx, esi
dec ebx
jne 0x51c4f0
lea eax, [esi - 0xfff1]
cmp esi, 0xfff0
mov edx, 0x80078071
cmova esi, eax
mov eax, ecx
mul edx
shr edx, 0xf
imul eax, edx, 0xfff1
sub ecx, eax
shl ecx, 0x10
or ecx, esi
mov eax, ecx
add esp, 4
pop esi
pop edi
pop ebx
pop ebp
ret