Function at 0x10007183
Capabilities:
Compute adler32 checksum

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x5c
mov ebp, ecx
mov eax, dword [ecx + 0x80]
mov dword [esp + 0x40], eax
mov edi, dword [ecx + 0x84]
mov eax, dword [ecx + 0x88]
mov dword [esp + 0x10], eax
lea eax, [ecx + 0x90]
mov dword [esp + 0x34], eax
lea eax, [ecx + 0x9272]
mov dword [esp + 0x54], eax
lea eax, [ecx + 0x1926a]
mov dword [esp + 0x58], eax
lea eax, [ecx + 0x98]
mov dword [esp + 0x44], eax
mov dword [esp + 4], ecx
cmp dword [esp + 0x10], 0
je 0x100071ee
mov esi, dword [ebp + 0x20]
mov ecx, dword [ebp + 0x24]
lea eax, [ecx + esi]
mov edx, esi
cmp eax, 1
ja 0x10007215
jmp 0x1000730c
cmp dword [esp + 0x40], 0
je 0x10007b9b
mov esi, dword [ebp + 0x20]
test esi, esi
je 0x10007b9b
mov ecx, dword [ebp + 0x24]
lea eax, [ecx + esi]
cmp eax, 1
jbe 0x10007301
mov edx, esi
mov dword [esp + 0x28], ecx
mov ebx, dword [ebp + 0x1c]
mov ecx, ebp
lea ebp, [ebx + edx]
add ebp, 0xfffffffe
mov eax, ebp
mov esi, edx
mov dword [esp + 0x24], edx
mov edx, 0x7fff
and eax, edx
mov edx, ecx
movzx ecx, byte [ecx + eax + 0x90]
lea eax, [ebx + esi]
dec eax
mov esi, 0x7fff
and eax, esi
movzx eax, byte [edx + eax + 0x90]
mov dword [esp], eax
mov edx, 0x102
mov esi, dword [esp + 0x24]
sub edx, esi
mov eax, dword [esp + 0x10]
cmp eax, edx
cmovb edx, eax
sub eax, edx
mov dword [esp + 0x10], eax
lea eax, [edx + esi]
mov esi, dword [esp + 4]
mov dword [esi + 0x20], eax
mov esi, eax
test edx, edx
je 0x10007409
mov dword [esp + 0x2c], esi
add ebx, dword [esp + 0x24]
lea eax, [edi + edx]
mov dword [esp + 8], eax
shl ecx, 5
xor ecx, dword [esp]
mov esi, dword [esp + 4]
and ebx, 0x7fff
mov dword [esp + 0x14], edi
mov al, byte [edi]
mov byte [esi + ebx + 0x90], al
cmp ebx, 0x100
ja 0x100072bc
mov byte [esi + ebx + 0x8090], al
movzx eax, al
shl ecx, 5
and ecx, 0x7fe0
xor ecx, eax
movzx eax, word [esi + ecx*2 + 0x29272]
mov edi, ebp
and edi, 0x7fff
mov word [esi + edi*2 + 0x19272], ax
mov edi, dword [esp + 0x14]
inc edi
mov word [esi + ecx*2 + 0x29272], bp
inc ebx
inc ebp
dec edx
jne 0x1000729a
mov edi, dword [esp + 8]
mov esi, dword [esp + 0x2c]
jmp 0x10007409
cmp dword [esp + 0x10], 0
je 0x10007444
cmp esi, 0x103
mov eax, 0x102
cmovae eax, esi
mov dword [esp + 0x24], eax
sub eax, esi
mov dword [esp], eax
lea eax, [esi - 2]
mov dword [esp + 0x30], eax
mov dword [esp + 0x28], ecx
lea eax, [esi + ecx]
inc eax
mov dword [esp + 8], eax
xor ecx, ecx
mov dword [esp + 0x14], edi
mov dword [esp + 0x2c], esi
cmp dword [esp], ecx
je 0x10007434
mov dl, byte [edi + ecx]
mov ebx, dword [ebp + 0x1c]
lea eax, [esi + ecx]
lea edi, [eax + ebx]
and edi, 0x7fff
mov byte [ebp + edi + 0x90], dl
cmp edi, 0x100
ja 0x10007371
mov byte [ebp + edi + 0x8090], dl
lea edi, [esi + ecx]
inc edi
mov dword [ebp + 0x20], edi
mov edi, dword [esp + 8]
add edi, ecx
cmp edi, 3
jb 0x100073ee
movzx esi, dl
mov edx, dword [esp + 0x30]
lea edi, [edx + ecx]
add edi, ebx
mov edx, 0x7fff
and edi, edx
lea ebp, [ebx + eax]
dec ebp
and ebp, edx
mov edx, dword [esp + 4]
movzx ebp, byte [edx + ebp + 0x90]
shl ebp, 5
xor ebp, esi
mov edx, dword [esp + 4]
movzx edx, byte [edx + edi + 0x90]
and edx, 0x1f
shl edx, 0xa
xor edx, ebp
mov ebp, dword [esp + 4]
movzx ebp, word [ebp + edx*2 + 0x29272]
mov esi, dword [esp + 4]
mov word [esi + edi*2 + 0x19272], bp
mov esi, dword [esp + 0x2c]
mov ebp, dword [esp + 4]
add eax, ebx
add eax, 0xfffffffe
mov word [ebp + edx*2 + 0x29272], ax
inc ecx
cmp dword [esp + 0x10], ecx
mov edi, dword [esp + 0x14]
jne 0x10007340
add esi, ecx
add edi, ecx
mov dword [esp + 0x10], 0
mov ebp, 0x8000
sub ebp, esi
mov eax, dword [esp + 0x28]
cmp ebp, eax
cmovae ebp, eax
mov eax, dword [esp + 4]
mov dword [eax + 0x24], ebp
cmp dword [esp + 0x40], 0
jne 0x1000745f
cmp esi, 0x102
jae 0x1000745f
jmp 0x10007ba3
add edi, ecx
sub dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x28]
mov esi, dword [esp + 0x24]
jmp 0x1000744c
mov dword [esp + 0x10], 0
mov ebp, 0x8000
sub ebp, esi
cmp ebp, ecx
cmovae ebp, ecx
mov eax, dword [esp + 4]
mov dword [eax + 0x24], ebp
mov eax, dword [esp + 4]
mov ecx, dword [eax + 0x50]
test ecx, ecx
mov dword [esp + 0x2c], ecx
mov edx, 2
cmove ecx, edx
mov edx, dword [eax + 8]
mov ebx, dword [eax + 0x1c]
mov dword [esp + 0x14], ebx
and ebx, 0x7fff
mov dword [esp + 0x30], edx
test edx, 0x90000
je 0x100074ea
mov dword [esp], 0
test ebp, ebp
je 0x100077cc
mov eax, dword [esp + 0x30]
and eax, 0x80000
jne 0x100077cc
test esi, esi
je 0x100077b7
mov ecx, dword [esp + 0x14]
dec ecx
and ecx, 0x7fff
mov eax, dword [esp + 4]
mov al, byte [eax + ecx + 0x90]
mov ecx, dword [esp + 0x34]
lea edx, [ecx + ebx]
xor ecx, ecx
cmp byte [edx + ecx], al
jne 0x100077b9
inc ecx
cmp esi, ecx
jne 0x100074d5
mov ecx, esi
jmp 0x100077b9
cmp esi, 0x103
jae 0x10007bf3
cmp ecx, esi
jae 0x100077a1
mov eax, dword [esp + 0x34]
lea edx, [eax + ebx]
mov dword [esp + 0x50], edx
movzx eax, word [eax + ebx]
mov word [esp + 0x3e], ax
xor eax, eax
cmp ecx, 0x20
setae al
mov edx, dword [esp + 4]
mov eax, dword [edx + eax*4 + 0xc]
mov dword [esp + 0x38], eax
lea eax, [ebx - 1]
add edx, ebx
mov dword [esp + 0x1c], edx
mov dword [esp + 0x18], 0
mov dword [esp + 0xc], ecx
mov edx, ebx
mov dword [esp + 0x20], ebx
mov dword [esp + 0x48], eax
mov ecx, dword [esp + 0xc]
add eax, ecx
mov ecx, dword [esp + 4]
movzx eax, word [ecx + eax + 0x90]
mov word [esp + 0x24], ax
mov ecx, dword [esp + 0xc]
lea eax, [ecx - 1]
mov dword [esp + 0x28], eax
mov eax, ecx
mov dword [esp + 0xc], ecx
mov ecx, dword [esp + 0x38]
dec ecx
mov dword [esp + 0x38], ecx
sub ecx, 1
jb 0x100077aa
mov eax, dword [esp + 4]
movzx edx, word [eax + edx*2 + 0x19272]
test edx, edx
je 0x100077aa
mov eax, dword [esp + 0x14]
sub eax, edx
movzx eax, ax
cmp ebp, eax
jb 0x100077aa
mov dword [esp + 8], ecx
mov dword [esp], eax
mov ebx, esi
and edx, 0x7fff
mov eax, dword [esp + 0x28]
add eax, edx
mov esi, dword [esp + 4]
movzx ecx, word [esp + 0x24]
cmp word [esi + eax + 0x90], cx
je 0x1000760f
movzx edx, word [esi + edx*2 + 0x19272]
test edx, edx
je 0x10007b29
mov eax, dword [esp + 0x14]
sub eax, edx
movzx eax, ax
cmp ebp, eax
jb 0x10007b29
mov dword [esp], eax
and edx, 0x7fff
mov eax, dword [esp + 0x28]
add eax, edx
mov esi, dword [esp + 4]
movzx ecx, word [esp + 0x24]
cmp word [esi + eax + 0x90], cx
jne 0x1000763f
mov esi, ebx
mov ebx, dword [esp + 0x20]
cmp dword [esp], 0
je 0x100077aa
mov ecx, ebp
mov ebp, ebx
mov eax, dword [esp + 0x34]
movzx ebx, word [esp + 0x3e]
cmp word [eax + edx], bx
je 0x10007692
mov ebx, ebp
mov ebp, ecx
mov ecx, dword [esp + 8]
jmp 0x10007572
movzx edx, word [esi + edx*2 + 0x19272]
test edx, edx
je 0x10007b29
mov eax, dword [esp + 0x14]
sub eax, edx
movzx eax, ax
cmp ebp, eax
jb 0x10007b29
mov dword [esp], eax
and edx, 0x7fff
mov eax, dword [esp + 0x28]
add eax, edx
mov esi, dword [esp + 4]
movzx ecx, word [esp + 0x24]
cmp word [esi + eax + 0x90], cx
mov esi, ebx
mov ebx, dword [esp + 0x20]
mov ecx, dword [esp + 8]
jne 0x10007572
jmp 0x10007615
mov eax, dword [esp + 0x44]
lea ebx, [eax + edx]
xor eax, eax
mov ebp, ecx
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x4c], ebx
movzx ecx, word [ecx + eax + 0x92]
mov word [esp + 8], cx
mov ecx, ebx
movzx ebx, word [ebx + eax - 6]
cmp word [esp + 8], bx
jne 0x10007734
mov ebx, dword [esp + 0x1c]
movzx ebx, word [ebx + eax + 0x94]
mov word [esp + 8], bx
movzx ebx, word [ecx + eax - 4]
cmp word [esp + 8], bx
jne 0x10007741
mov ebx, dword [esp + 0x1c]
movzx ebx, word [ebx + eax + 0x96]
mov word [esp + 8], bx
movzx ebx, word [ecx + eax - 2]
cmp word [esp + 8], bx
jne 0x1000774e
mov ebx, dword [esp + 0x1c]
movzx ebx, word [ebx + eax + 0x98]
mov word [esp + 8], bx
movzx ebx, word [ecx + eax]
movzx ecx, word [esp + 8]
cmp cx, bx
jne 0x1000775b
add eax, 8
cmp eax, 0x100
mov ecx, dword [esp + 0x1c]
mov ebx, dword [esp + 0x4c]
jne 0x100076a5
jmp 0x10007b8d
mov ecx, dword [esp + 0x1c]
add eax, ecx
add eax, 0x92
jmp 0x10007766
mov ecx, dword [esp + 0x1c]
add eax, ecx
add eax, 0x94
jmp 0x10007766
mov ecx, dword [esp + 0x1c]
add eax, ecx
add eax, 0x96
jmp 0x10007766
mov ecx, dword [esp + 0x1c]
add eax, ecx
add eax, 0x98
sub eax, dword [esp + 0x50]
xor ecx, ecx
cmp byte [esp + 8], bl
sete cl
add ecx, eax
mov eax, dword [esp + 0xc]
cmp ecx, eax
mov ebx, dword [esp + 0x20]
jbe 0x1000756d
mov eax, dword [esp]
mov dword [esp + 0x18], eax
cmp ecx, esi
cmovae ecx, esi
mov dword [esp + 0xc], ecx
mov eax, dword [esp + 0x48]
jb 0x10007545
jmp 0x100077cc
mov dword [esp], 0
jmp 0x100077cc
mov eax, dword [esp + 0x18]
mov dword [esp], eax
mov ecx, dword [esp + 0xc]
jmp 0x100077cc
xor ecx, ecx
xor eax, eax
cmp ecx, 3
setae al
mov dword [esp], eax
mov eax, 0
cmovb ecx, eax
cmp ecx, 3
sete al
mov esi, dword [esp]
cmp esi, 0x2000
setae dl
test al, dl
jne 0x100077fd
mov eax, esi
cmp ebx, esi
je 0x100077fd
bt dword [esp + 0x30], 0x11
jae 0x100078b8
cmp ecx, 6
jae 0x100078b8
mov edx, dword [esp + 0x2c]
test edx, edx
mov ebp, dword [esp + 4]
je 0x10007a72
cmp edx, 3
jb 0x10007bde
mov eax, dword [ebp + 0x4c]
dec eax
cmp eax, 0x8000
jae 0x10007bde
add dword [ebp + 0x3c], edx
mov ecx, edx
add cl, 0xfd
mov esi, edx
mov edx, dword [ebp + 0x28]
mov byte [edx], cl
mov ecx, dword [ebp + 0x28]
mov byte [ecx + 1], al
mov ecx, eax
shr ecx, 8
mov edx, dword [ebp + 0x28]
mov byte [edx + 2], cl
add dword [ebp + 0x28], 3
mov edx, dword [ebp + 0x2c]
mov bl, byte [edx]
shr bl, 1
or bl, 0x80
mov byte [edx], bl
dec dword [ebp + 0x38]
jne 0x10007871
mov dword [ebp + 0x38], 8
mov edx, dword [ebp + 0x28]
mov ebx, edi
lea edi, [edx + 1]
mov dword [ebp + 0x28], edi
mov edi, ebx
mov dword [ebp + 0x2c], edx
mov edx, eax
and edx, 0x1ff
lea edx, [edx + 0x1001486a]
lea ecx, [ecx + 0x10014a6a]
cmp eax, 0x200
cmovb ecx, edx
movzx eax, byte [ecx]
inc word [ebp + eax*2 + 0x83d2]
movzx eax, word [esi + esi + 0x10014ae4]
inc word [ebp + eax*2 + 0x8192]
mov ecx, dword [ebp + 0x50]
dec ecx
mov dword [ebp + 0x50], 0
jmp 0x10007ab0
mov edx, dword [esp + 0x2c]
test edx, edx
mov ebp, dword [esp + 4]
je 0x100079c0
cmp ecx, edx
jbe 0x1000780d
mov dword [esp + 0x14], edi
mov edx, dword [ebp + 0x28]
mov eax, dword [ebp + 0x54]
inc dword [ebp + 0x3c]
lea edi, [edx + 1]
mov dword [ebp + 0x28], edi
mov byte [edx], al
mov edx, dword [ebp + 0x2c]
shr byte [edx], 1
dec dword [ebp + 0x38]
jne 0x10007902
mov dword [ebp + 0x38], 8
mov edx, dword [ebp + 0x28]
lea edi, [edx + 1]
mov dword [ebp + 0x28], edi
mov dword [ebp + 0x2c], edx
movzx eax, al
inc word [ebp + eax*2 + 0x8192]
cmp ecx, 0x80
jb 0x10007b3d
mov ebx, dword [esp]
dec ebx
cmp ebx, 0x8000
mov edi, dword [esp + 0x14]
jae 0x10007bde
mov esi, dword [esp + 4]
add dword [esi + 0x3c], ecx
mov eax, ecx
add al, 0xfd
mov edx, dword [esi + 0x28]
mov byte [edx], al
mov eax, dword [esi + 0x28]
mov byte [eax + 1], bl
mov eax, ebx
shr eax, 8
mov edx, dword [esi + 0x28]
mov byte [edx + 2], al
add dword [esi + 0x28], 3
mov edx, dword [esi + 0x2c]
mov ebp, ebx
mov bl, byte [edx]
shr bl, 1
or bl, 0x80
mov byte [edx], bl
dec dword [esi + 0x38]
jne 0x1000797c
mov dword [esi + 0x38], 8
mov edx, dword [esi + 0x28]
lea edi, [edx + 1]
mov dword [esi + 0x28], edi
mov edi, dword [esp + 0x14]
mov dword [esi + 0x2c], edx
mov edx, ebp
and edx, 0x1ff
lea edx, [edx + 0x1001486a]
lea eax, [eax + 0x10014a6a]
cmp ebp, 0x200
cmovb eax, edx
movzx eax, byte [eax]
inc word [esi + eax*2 + 0x83d2]
movzx eax, word [ecx + ecx + 0x10014ae4]
inc word [esi + eax*2 + 0x8192]
mov dword [esi + 0x50], 0
jmp 0x10007a6e
test eax, eax
je 0x10007a72
cmp dword [ebp + 0x14], 0
je 0x10007b5d
cmp eax, 0x8000
ja 0x10007bde
cmp ecx, 2
jbe 0x10007bde
mov ebp, edi
mov dword [esp], eax
dec eax
mov esi, dword [esp + 4]
add dword [esi + 0x3c], ecx
mov edx, ecx
add dl, 0xfd
mov edi, dword [esi + 0x28]
mov byte [edi], dl
mov edx, dword [esi + 0x28]
mov byte [edx + 1], al
mov edx, eax
shr edx, 8
mov edi, dword [esi + 0x28]
mov byte [edi + 2], dl
add dword [esi + 0x28], 3
mov edi, dword [esi + 0x2c]
mov bl, byte [edi]
shr bl, 1
or bl, 0x80
mov byte [edi], bl
dec dword [esi + 0x38]
jne 0x10007a36
mov dword [esi + 0x38], 8
mov edi, dword [esi + 0x28]
lea ebx, [edi + 1]
mov dword [esi + 0x28], ebx
mov dword [esi + 0x2c], edi
and eax, 0x1ff
lea eax, [eax + 0x1001486a]
lea edx, [edx + 0x10014a6a]
cmp dword [esp], 0x201
cmovb edx, eax
movzx eax, byte [edx]
inc word [esi + eax*2 + 0x83d2]
movzx eax, word [ecx + ecx + 0x10014ae4]
inc word [esi + eax*2 + 0x8192]
mov edi, ebp
mov ebp, esi
jmp 0x10007ab0
movzx eax, byte [ebp + ebx + 0x90]
inc dword [ebp + 0x3c]
mov ecx, dword [ebp + 0x28]
lea edx, [ecx + 1]
mov dword [ebp + 0x28], edx
mov byte [ecx], al
mov ecx, dword [ebp + 0x2c]
shr byte [ecx], 1
dec dword [ebp + 0x38]
jne 0x10007aa5
mov dword [ebp + 0x38], 8
mov ecx, dword [ebp + 0x28]
lea edx, [ecx + 1]
mov dword [ebp + 0x28], edx
mov dword [ebp + 0x2c], ecx
inc word [ebp + eax*2 + 0x8192]
xor ecx, ecx
inc ecx
add dword [ebp + 0x1c], ecx
mov eax, dword [ebp + 0x20]
sub eax, ecx
jb 0x10007bc9
mov dword [ebp + 0x20], eax
add ecx, dword [ebp + 0x24]
mov eax, 0x8000
cmp ecx, eax
cmovae ecx, eax
mov dword [ebp + 0x24], ecx
mov eax, dword [ebp + 0x28]
cmp eax, dword [esp + 0x58]
jbe 0x10007b00
mov dword [ebp + 0x84], edi
mov eax, dword [esp + 0x10]
mov dword [ebp + 0x88], eax
mov ecx, ebp
xor edx, edx
call fcn.10007cff
test eax, eax
je 0x100071d2
jmp 0x10007bbc
mov ecx, dword [ebp + 0x3c]
cmp ecx, 0x7c01
jb 0x100071d2
sub eax, dword [esp + 0x54]
imul eax, eax, 0x73
shr eax, 7
cmp eax, ecx
jae 0x10007ada
test byte [ebp + 0xa], 8
je 0x100071d2
jmp 0x10007ada
mov eax, dword [esp + 0x18]
mov dword [esp], eax
mov ecx, dword [esp + 0xc]
mov ebx, dword [esp + 0x20]
jmp 0x100077cc
movzx eax, byte [ebp + ebx + 0x90]
mov dword [ebp + 0x54], eax
mov eax, dword [esp]
mov dword [ebp + 0x4c], eax
mov dword [ebp + 0x50], ecx
xor ecx, ecx
inc ecx
mov edi, dword [esp + 0x14]
jmp 0x10007ab0
bt dword [esp + 0x30], 0x10
jb 0x100079d2
cmp ecx, 0x80
jae 0x100079d2
mov edx, eax
movzx eax, byte [ebp + ebx + 0x90]
mov dword [ebp + 0x54], eax
mov dword [ebp + 0x4c], edx
mov dword [ebp + 0x50], ecx
jmp 0x10007aad
mov eax, 0x102
cmp esi, eax
cmovae esi, eax
mov ecx, esi
jmp 0x10007b34
mov dword [esp + 0x10], 0
mov eax, dword [esp + 4]
mov dword [eax + 0x84], edi
mov ecx, dword [esp + 0x10]
mov dword [eax + 0x88], ecx
xor eax, eax
inc eax
jmp 0x10007bc1
not eax
shr eax, 0x1f
add esp, 0x5c
pop esi
pop edi
pop ebx
pop ebp
ret
push 0x1012
push str.src_compat_dvfs_stb_zip_v221.h
push str.d__m_lookahead_size___len_to_move
call dword [sym.imp.msvcrt.dll__assert]
push 0xf83
push str.src_compat_dvfs_stb_zip_v221.h
push str._match_len___TDEFL_MIN_MATCH_LEN____match_dist___1____match_dist___TDEFL_LZ_DICT_SIZE_
call dword [sym.imp.msvcrt.dll__assert]
push 0xe4d
push str.src_compat_dvfs_stb_zip_v221.h
push str.max_match_len___TDEFL_MAX_MATCH_LEN
call dword [sym.imp.msvcrt.dll__assert]