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

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x38
mov eax, dword [esp + 0x4c]
mov edx, dword [esp + 0x50]
mov edi, eax
movzx ebx, ax
shr edi, 0x10
cmp dword [esp + 0x54], 1
mov dword [esp + 0x2c], edi
je 0x6309a14f
test edx, edx
je 0x6309a182
cmp dword [esp + 0x54], 0xf
ja 0x63099e7e
mov ecx, dword [esp + 0x54]
test ecx, ecx
je 0x63099e46
movzx eax, byte [edx]
add ebx, eax
add dword [esp + 0x2c], ebx
cmp dword [esp + 0x54], 1
mov esi, dword [esp + 0x2c]
je 0x63099e46
movzx eax, byte [edx + 1]
add ebx, eax
mov eax, esi
add eax, ebx
cmp dword [esp + 0x54], 2
mov esi, eax
mov dword [esp + 0x2c], eax
je 0x63099e46
movzx eax, byte [edx + 2]
add ebx, eax
mov eax, esi
add eax, ebx
cmp dword [esp + 0x54], 3
mov esi, eax
mov dword [esp + 0x2c], eax
je 0x63099e46
movzx eax, byte [edx + 3]
add ebx, eax
mov eax, esi
add eax, ebx
cmp dword [esp + 0x54], 4
mov esi, eax
mov dword [esp + 0x2c], eax
je 0x63099e46
movzx eax, byte [edx + 4]
add ebx, eax
mov eax, esi
add eax, ebx
cmp dword [esp + 0x54], 5
mov esi, eax
mov dword [esp + 0x2c], eax
je 0x63099e46
movzx eax, byte [edx + 5]
add ebx, eax
mov eax, esi
add eax, ebx
cmp dword [esp + 0x54], 6
mov esi, eax
mov dword [esp + 0x2c], eax
je 0x63099e46
movzx eax, byte [edx + 6]
add ebx, eax
mov eax, esi
add eax, ebx
cmp dword [esp + 0x54], 7
mov esi, eax
mov dword [esp + 0x2c], eax
je 0x63099e46
movzx eax, byte [edx + 7]
add ebx, eax
mov eax, esi
add eax, ebx
cmp dword [esp + 0x54], 8
mov esi, eax
mov dword [esp + 0x2c], eax
je 0x63099e46
movzx eax, byte [edx + 8]
add ebx, eax
mov eax, esi
add eax, ebx
cmp dword [esp + 0x54], 9
mov esi, eax
mov dword [esp + 0x2c], eax
je 0x63099e46
movzx eax, byte [edx + 9]
add ebx, eax
mov eax, esi
add eax, ebx
cmp dword [esp + 0x54], 0xa
mov esi, eax
mov dword [esp + 0x2c], eax
je 0x63099e46
movzx eax, byte [edx + 0xa]
add ebx, eax
mov eax, esi
add eax, ebx
cmp dword [esp + 0x54], 0xb
mov esi, eax
mov dword [esp + 0x2c], eax
je 0x63099e46
movzx eax, byte [edx + 0xb]
add ebx, eax
mov eax, esi
add eax, ebx
cmp dword [esp + 0x54], 0xc
mov esi, eax
mov dword [esp + 0x2c], eax
je 0x63099e46
movzx eax, byte [edx + 0xc]
add ebx, eax
mov eax, esi
add eax, ebx
cmp dword [esp + 0x54], 0xd
mov esi, eax
mov dword [esp + 0x2c], eax
je 0x63099e46
movzx eax, byte [edx + 0xd]
add ebx, eax
mov eax, esi
add eax, ebx
cmp dword [esp + 0x54], 0xe
mov esi, eax
mov dword [esp + 0x2c], eax
je 0x63099e46
movzx eax, byte [edx + 0xe]
add ebx, eax
mov eax, esi
add eax, ebx
mov dword [esp + 0x2c], eax
lea eax, [ebx - 0xfff1]
cmp ebx, 0xfff1
mov edx, 0x80078071
mov esi, dword [esp + 0x2c]
cmovae ebx, 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, ebx
add esp, 0x38
pop ebx
pop esi
pop edi
pop ebp
ret
cmp dword [esp + 0x54], 0x15af
mov ebp, ebx
mov eax, edx
jbe 0x6309a18c
sub dword [esp + 0x54], 0x15b0
lea esi, [eax + 0x15b0]
mov dword [esp + 0x30], esi
movzx edx, byte [eax]
add eax, 0x10
lea edi, [ebp + edx]
movzx edx, byte [eax - 0xf]
mov dword [esp], edi
add edx, edi
mov edi, edx
movzx edx, byte [eax - 0xe]
mov dword [esp + 4], edi
mov esi, edx
movzx edx, byte [eax - 0xd]
add esi, edi
mov dword [esp + 8], esi
mov ebx, edx
movzx edx, byte [eax - 0xc]
add ebx, esi
mov dword [esp + 0xc], ebx
mov ecx, edx
movzx edx, byte [eax - 0xb]
add ecx, ebx
mov dword [esp + 0x10], ecx
mov ebp, edx
movzx edx, byte [eax - 0xa]
add ebp, ecx
mov dword [esp + 0x14], ebp
add edx, ebp
movzx ebp, byte [eax - 1]
mov edi, edx
movzx edx, byte [eax - 9]
mov dword [esp + 0x18], edi
add edx, edi
movzx edi, byte [eax - 5]
mov esi, edx
movzx edx, byte [eax - 8]
mov dword [esp + 0x1c], esi
add edx, esi
movzx esi, byte [eax - 4]
mov ebx, edx
movzx edx, byte [eax - 7]
mov dword [esp + 0x20], ebx
add edx, ebx
movzx ebx, byte [eax - 3]
mov ecx, edx
movzx edx, byte [eax - 6]
mov dword [esp + 0x24], ecx
add edx, ecx
movzx ecx, byte [eax - 2]
add edi, edx
mov dword [esp + 0x28], edx
mov edx, dword [esp + 4]
add edx, dword [esp]
add esi, edi
add edx, dword [esp + 8]
add ebx, esi
add edx, dword [esp + 0xc]
add ecx, ebx
add edx, dword [esp + 0x10]
add ebp, ecx
add edx, dword [esp + 0x14]
add edx, dword [esp + 0x18]
add edx, dword [esp + 0x1c]
add edx, dword [esp + 0x20]
add edx, dword [esp + 0x24]
add edx, dword [esp + 0x28]
add edx, edi
add edx, esi
add ebx, edx
add ecx, ebx
add ecx, ebp
add dword [esp + 0x2c], ecx
cmp eax, dword [esp + 0x30]
jne 0x63099ea2
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
cmp dword [esp + 0x54], 0x15af
mov eax, dword [esp + 0x30]
mov dword [esp + 0x2c], edi
ja 0x63099e90
mov eax, dword [esp + 0x54]
mov ebx, ebp
test eax, eax
je 0x6309a13e
cmp dword [esp + 0x54], 0xf
jbe 0x6309a195
mov eax, dword [esp + 0x54]
mov edx, dword [esp + 0x30]
mov dword [esp + 4], eax
movzx eax, byte [edx]
sub dword [esp + 4], 0x10
add edx, 0x10
lea esi, [ebx + eax]
movzx eax, byte [edx - 0xf]
mov dword [esp + 8], esi
add eax, esi
mov esi, eax
movzx eax, byte [edx - 0xe]
mov dword [esp + 0xc], esi
mov edi, eax
movzx eax, byte [edx - 0xd]
add edi, esi
mov dword [esp + 0x10], edi
mov ecx, eax
movzx eax, byte [edx - 0xc]
add ecx, edi
movzx edi, byte [edx - 7]
mov dword [esp + 0x14], ecx
mov ebx, eax
movzx eax, byte [edx - 0xb]
add ebx, ecx
movzx ecx, byte [edx - 5]
mov dword [esp + 0x18], ebx
mov ebp, eax
movzx eax, byte [edx - 0xa]
add ebp, ebx
mov dword [esp + 0x1c], ebp
mov esi, eax
movzx eax, byte [edx - 9]
add esi, ebp
movzx ebp, byte [edx - 8]
mov dword [esp + 0x20], esi
add eax, esi
movzx esi, byte [edx - 6]
add ebp, eax
mov dword [esp + 0x24], eax
movzx eax, byte [edx - 4]
add edi, ebp
add esi, edi
add ecx, esi
lea ebx, [ecx + eax]
movzx eax, byte [edx - 3]
mov dword [esp], ebx
mov ebx, dword [esp]
add ebx, eax
movzx eax, byte [edx - 2]
mov dword [esp + 0x28], ebx
add eax, ebx
movzx ebx, byte [edx - 1]
mov dword [esp + 0x34], eax
add ebx, eax
mov eax, dword [esp + 0xc]
add eax, dword [esp + 8]
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, dword [esp + 0x24]
add eax, ebp
add eax, edi
add eax, esi
add eax, ecx
add eax, dword [esp]
add eax, dword [esp + 0x28]
add eax, dword [esp + 0x34]
add eax, ebx
add dword [esp + 0x2c], eax
cmp dword [esp + 4], 0xf
ja 0x63099fe9
mov eax, dword [esp + 0x54]
mov esi, dword [esp + 0x30]
mov edx, dword [esp + 0x54]
sub eax, 0x10
and eax, 0xfffffff0
and edx, 0xf
lea eax, [esi + eax + 0x10]
test edx, edx
mov dword [esp + 0x30], eax
lea eax, [edx - 1]
je 0x6309a115
mov edi, dword [esp + 0x30]
mov ecx, dword [esp + 0x2c]
lea edx, [edi + eax + 1]
mov eax, edi
add eax, 1
movzx esi, byte [eax - 1]
add ebx, esi
add ecx, ebx
cmp eax, edx
jne 0x6309a102
mov dword [esp + 0x2c], ecx
mov eax, ebx
mov ecx, 0x80078071
mul ecx
mov eax, edx
shr eax, 0xf
imul eax, eax, 0xfff1
sub ebx, 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, 0x38
shl eax, 0x10
or eax, ebx
pop ebx
pop esi
pop edi
pop ebp
ret
movzx eax, byte [edx]
add eax, ebx
lea edx, [eax - 0xfff1]
cmp eax, 0xfff1
cmovae eax, edx
mov edx, edi
add edx, eax
lea ecx, [edx - 0xfff1]
cmp edx, 0xfff1
cmovae edx, ecx
add esp, 0x38
shl edx, 0x10
pop ebx
or eax, edx
pop esi
pop edi
pop ebp
ret
mov eax, 1
jmp 0x63099e76
mov dword [esp + 0x30], edx
jmp 0x63099fdd
mov eax, dword [esp + 0x54]
sub eax, 1
jmp 0x6309a0f4