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

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x28
mov eax, ecx
mov r13, rdx
mov dword [rsp + 0x14], r8d
shr eax, 0x10
cmp r8d, 1
movzx r15d, cx
mov dword [rsp + 0x10], eax
je 0x5e7d21
test rdx, rdx
je 0x5e7eb7
cmp dword [rsp + 0x14], 0xf
ja 0x5e7be1
mov edi, dword [rsp + 0x14]
mov eax, edi
sub eax, 1
test edi, edi
je 0x5e7b9d
lea rdx, [rdx + rax + 1]
mov eax, dword [rsp + 0x10]
add r13, 1
movzx ecx, byte [r13 - 1]
add r15d, ecx
add eax, r15d
cmp r13, rdx
jne 0x5e7b85
mov dword [rsp + 0x10], eax
mov eax, dword [rsp + 0x10]
lea ecx, [r15 - 0xfff1]
cmp r15d, 0xfff1
mov edx, 0x80078071
cmovb ecx, r15d
mul edx
mov eax, dword [rsp + 0x10]
shr edx, 0xf
imul edx, edx, 0xfff1
sub eax, edx
shl eax, 0x10
or ecx, eax
mov eax, ecx
add rsp, 0x28
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
cmp dword [rsp + 0x14], 0x15af
jbe 0x5e7d64
sub dword [rsp + 0x14], 0x15b0
lea rax, [r13 + 0x15b0]
mov rsi, r13
mov qword [rsp + 8], rax
nop word cs:[rax + rax]
movzx r13d, byte [rsi]
add rsi, 0x10
movzx r14d, byte [rsi - 0xf]
movzx r12d, byte [rsi - 0xe]
movzx ebp, byte [rsi - 0xd]
movzx edi, byte [rsi - 0xc]
movzx ebx, byte [rsi - 0xb]
movzx r11d, byte [rsi - 0xa]
add r13d, r15d
movzx r10d, byte [rsi - 9]
movzx eax, byte [rsi - 8]
add r14d, r13d
movzx r9d, byte [rsi - 7]
movzx r8d, byte [rsi - 5]
add r12d, r14d
add r13d, r14d
movzx ecx, byte [rsi - 4]
add ebp, r12d
add r13d, r12d
movzx edx, byte [rsi - 3]
add edi, ebp
add r13d, ebp
movzx r15d, byte [rsi - 1]
add ebx, edi
add r13d, edi
add r11d, ebx
add ebx, r13d
add r10d, r11d
add r11d, ebx
add eax, r10d
add r10d, r11d
add r9d, eax
mov dword [rsp], eax
add r10d, dword [rsp]
mov eax, r9d
movzx r9d, byte [rsi - 6]
mov dword [rsp + 4], eax
add r10d, dword [rsp + 4]
add r9d, eax
movzx eax, byte [rsi - 2]
add r8d, r9d
add r9d, r10d
add ecx, r8d
add r8d, r9d
add edx, ecx
add ecx, r8d
add eax, edx
add edx, ecx
add r15d, eax
add eax, edx
add eax, r15d
add dword [rsp + 0x10], eax
cmp rsi, qword [rsp + 8]
jne 0x5e7c10
mov eax, 0x80078071
mov r13, rsi
mul r15d
mov eax, 0x80078071
shr edx, 0xf
imul edx, edx, 0xfff1
sub r15d, edx
mul dword [rsp + 0x10]
shr edx, 0xf
imul edx, edx, 0xfff1
sub dword [rsp + 0x10], edx
cmp dword [rsp + 0x14], 0x15af
ja 0x5e7bef
mov eax, dword [rsp + 0x14]
test eax, eax
jne 0x5e7d59
mov ecx, dword [rsp + 0x10]
shl ecx, 0x10
or ecx, r15d
jmp 0x5e7bce
movzx eax, byte [rdx]
add r15d, eax
lea eax, [r15 - 0xfff1]
cmp r15d, 0xfff1
cmovae r15d, eax
mov eax, dword [rsp + 0x10]
add eax, r15d
lea ecx, [rax - 0xfff1]
cmp eax, 0xfff1
cmovb ecx, eax
shl ecx, 0x10
or ecx, r15d
jmp 0x5e7bce
cmp dword [rsp + 0x14], 0xf
jbe 0x5e7ec1
mov eax, dword [rsp + 0x14]
mov rdx, r13
mov qword [rsp + 0x18], r13
mov dword [rsp + 8], eax
movzx r13d, byte [rdx]
movzx r14d, byte [rdx + 1]
movzx r12d, byte [rdx + 2]
movzx ebp, byte [rdx + 3]
movzx edi, byte [rdx + 4]
movzx esi, byte [rdx + 5]
movzx ebx, byte [rdx + 6]
movzx r11d, byte [rdx + 7]
add r13d, r15d
movzx r10d, byte [rdx + 8]
movzx r9d, byte [rdx + 9]
add r14d, r13d
movzx r8d, byte [rdx + 0xa]
movzx eax, byte [rdx + 0xb]
add r12d, r14d
add r13d, r14d
movzx r15d, byte [rdx + 0xf]
add ebp, r12d
add r12d, r13d
sub dword [rsp + 8], 0x10
add edi, ebp
add ebp, r12d
add esi, edi
add edi, ebp
add ebx, esi
add esi, edi
add r11d, ebx
add ebx, esi
add r10d, r11d
add r11d, ebx
add r9d, r10d
add r10d, r11d
add r8d, r9d
add r9d, r10d
add eax, r8d
add r8d, r9d
mov ecx, eax
movzx eax, byte [rdx + 0xc]
mov dword [rsp], ecx
add r8d, dword [rsp]
add eax, ecx
movzx ecx, byte [rdx + 0xd]
mov dword [rsp + 4], eax
add r8d, dword [rsp + 4]
add ecx, eax
movzx eax, byte [rdx + 0xe]
add eax, ecx
add ecx, r8d
add r15d, eax
add eax, ecx
add eax, r15d
add dword [rsp + 0x10], eax
add rdx, 0x10
cmp dword [rsp + 8], 0xf
ja 0x5e7d74
mov edi, dword [rsp + 0x14]
mov r13, qword [rsp + 0x18]
mov eax, edi
sub eax, 0x10
shr eax, 4
mov edx, eax
neg eax
add rdx, 1
shl eax, 4
shl rdx, 4
lea eax, [rdi + rax - 0x11]
add r13, rdx
and edi, 0xf
je 0x5e7e7f
lea rdx, [r13 + rax + 1]
mov eax, dword [rsp + 0x10]
add r13, 1
movzx ecx, byte [r13 - 1]
add r15d, ecx
add eax, r15d
cmp r13, rdx
jne 0x5e7e67
mov dword [rsp + 0x10], eax
mov ecx, 0x80078071
mov eax, r15d
mul ecx
mov eax, dword [rsp + 0x10]
shr edx, 0xf
imul edx, edx, 0xfff1
sub r15d, edx
mul ecx
shr edx, 0xf
imul edx, edx, 0xfff1
sub dword [rsp + 0x10], edx
mov ecx, dword [rsp + 0x10]
shl ecx, 0x10
or ecx, r15d
jmp 0x5e7bce
mov ecx, 1
jmp 0x5e7bce
mov eax, dword [rsp + 0x14]
sub eax, 1
jmp 0x5e7e5e