Function at 0x715e20
Capabilities:
Compress data via zlib inflate or deflate
Enumerate pe sections

Disassembly:
sub esp, 0x10
push ebx
push edi
mov edi, ecx
mov ebx, edx
mov dword [esp + 8], ebx
test edi, edi
je 0x716aa4
cmp dword [edi + 0x20], 0
je 0x716aa4
cmp dword [edi + 0x24], 0
je 0x716aa4
mov eax, dword [edi + 0x1c]
test eax, eax
je 0x716aa4
cmp dword [eax], edi
jne 0x716aa4
mov eax, dword [eax + 4]
cmp eax, 0x2a
je 0x715e8d
cmp eax, 0x39
je 0x715e8d
cmp eax, 0x45
je 0x715e8d
cmp eax, 0x49
je 0x715e8d
cmp eax, 0x5b
je 0x715e8d
cmp eax, 0x67
je 0x715e8d
cmp eax, 0x71
je 0x715e8d
cmp eax, 0x29a
jne 0x716aa4
cmp ebx, 5
ja 0x716aa4
cmp dword [edi + 0xc], 0
push esi
mov esi, dword [edi + 0x1c]
je 0x716a91
cmp dword [edi + 4], 0
je 0x715eb3
cmp dword [edi], 0
je 0x716a91
cmp dword [esi + 4], 0x29a
jne 0x715ec5
cmp ebx, 4
jne 0x716a91
cmp dword [edi + 0x10], 0
push ebp
je 0x715f72
cmp dword [esi + 0x14], 0
mov edx, dword [esi + 0x28]
mov dword [esi + 0x28], ebx
je 0x715f31
mov ebp, dword [edi + 0x1c]
mov ecx, ebp
call fcn.0071a700
mov ebx, dword [edi + 0x10]
cmp dword [ebp + 0x14], ebx
cmovbe ebx, dword [ebp + 0x14]
test ebx, ebx
je 0x715f1a
push ebx
push dword [ebp + 0x10]
push dword [edi + 0xc]
call sub.VCRUNTIME140.dll_memcpy
add dword [edi + 0xc], ebx
add esp, 0xc
add dword [ebp + 0x10], ebx
add dword [edi + 0x14], ebx
sub dword [edi + 0x10], ebx
sub dword [ebp + 0x14], ebx
jne 0x715f1a
mov eax, dword [ebp + 8]
mov dword [ebp + 0x10], eax
cmp dword [edi + 0x10], 0
jne 0x715f5e
mov dword [esi + 0x28], 0xffffffff
pop ebp
pop esi
pop edi
xor eax, eax
pop ebx
add esp, 0x10
ret
cmp dword [edi + 4], 0
jne 0x715f5e
xor eax, eax
mov ebp, 9
cmp edx, 4
cmovg eax, ebp
add edx, edx
sub edx, eax
xor ecx, ecx
cmp ebx, 4
lea eax, [ebx + ebx]
cmovg ecx, ebp
sub eax, ecx
cmp eax, edx
jg 0x715f5e
cmp ebx, 4
jne 0x715f72
mov eax, dword [esi + 4]
cmp eax, 0x29a
jne 0x715f86
cmp dword [edi + 4], 0
je 0x7160db
pop ebp
pop esi
mov dword [edi + 0x18], str.buffer_error
mov eax, 0xfffffffb
pop edi
pop ebx
add esp, 0x10
ret
cmp eax, 0x2a
jne 0x7160db
cmp dword [esi + 0x18], 0
jne 0x715fa1
mov dword [esi + 4], 0x71
jmp 0x7160db
mov ecx, dword [esi + 0x30]
shl ecx, 0xc
sub ecx, 0x7800
cmp dword [esi + 0x88], 2
mov ebx, ecx
jge 0x715fe8
mov eax, dword [esi + 0x84]
cmp eax, 2
jl 0x715fe8
cmp eax, 6
jge 0x715fd2
mov edx, 0x40
lea eax, [edx + 0x20]
jmp 0x715fed
jne 0x715fde
mov edx, 0x80
lea eax, [edx + 0x20]
jmp 0x715fed
mov edx, 0xc0
lea eax, [edx + 0x20]
jmp 0x715fed
xor edx, edx
lea eax, [edx + 0x20]
or ecx, edx
cmp dword [esi + 0x6c], 0
je 0x715ff9
mov ecx, ebx
or ecx, eax
mov eax, 0x8421085
mul ecx
mov eax, dword [esi + 8]
sub ecx, edx
shr ecx, 1
add ecx, edx
shr ecx, 4
inc ecx
mov ebx, ecx
shl ebx, 5
sub ebx, ecx
mov ecx, dword [esi + 0x14]
mov edx, ebx
shr edx, 8
mov byte [ecx + eax], dl
mov ecx, dword [esi + 0x14]
mov eax, dword [esi + 8]
inc ecx
mov dword [esi + 0x14], ecx
mov byte [ecx + eax], bl
mov ebx, dword [esi + 0x14]
inc ebx
cmp dword [esi + 0x6c], 0
mov dword [esi + 0x14], ebx
je 0x71607b
movzx edx, word [edi + 0x32]
mov eax, dword [esi + 8]
mov ecx, edx
shr ecx, 8
mov byte [ebx + eax], cl
mov ecx, dword [esi + 0x14]
mov eax, dword [esi + 8]
inc ecx
mov dword [esi + 0x14], ecx
mov byte [ecx + eax], dl
mov edx, dword [esi + 0x14]
mov eax, dword [esi + 8]
inc edx
mov dword [esi + 0x14], edx
movzx ebx, word [edi + 0x30]
mov ecx, ebx
shr ecx, 8
mov byte [edx + eax], cl
mov ecx, dword [esi + 0x14]
mov eax, dword [esi + 8]
inc ecx
mov dword [esi + 0x14], ecx
mov byte [ecx + eax], bl
inc dword [esi + 0x14]
push 0
xor edx, edx
xor ecx, ecx
call fcn.00715070
mov dword [edi + 0x30], eax
add esp, 4
mov dword [esi + 4], 0x71
mov ebp, dword [edi + 0x1c]
mov ecx, ebp
call fcn.0071a700
mov ebx, dword [edi + 0x10]
cmp dword [ebp + 0x14], ebx
cmovbe ebx, dword [ebp + 0x14]
test ebx, ebx
je 0x7160d1
push ebx
push dword [ebp + 0x10]
push dword [edi + 0xc]
call sub.VCRUNTIME140.dll_memcpy
add dword [edi + 0xc], ebx
add esp, 0xc
add dword [ebp + 0x10], ebx
add dword [edi + 0x14], ebx
sub dword [edi + 0x10], ebx
sub dword [ebp + 0x14], ebx
jne 0x7160d1
mov eax, dword [ebp + 8]
mov dword [ebp + 0x10], eax
cmp dword [esi + 0x14], 0
jne 0x715f20
cmp dword [esi + 4], 0x39
jne 0x716327
push 0
xor edx, edx
xor ecx, ecx
call fcn.007152e0
mov dword [edi + 0x30], eax
add esp, 4
mov ecx, dword [esi + 0x14]
mov eax, dword [esi + 8]
mov byte [ecx + eax], 0x1f
mov ecx, dword [esi + 0x14]
mov eax, dword [esi + 8]
inc ecx
mov dword [esi + 0x14], ecx
mov byte [ecx + eax], 0x8b
mov ecx, dword [esi + 0x14]
mov eax, dword [esi + 8]
inc ecx
mov dword [esi + 0x14], ecx
mov byte [ecx + eax], 8
mov edx, dword [esi + 0x14]
mov ebx, dword [esi + 0x1c]
inc edx
mov dword [esi + 0x14], edx
test ebx, ebx
jne 0x7161fd
mov eax, dword [esi + 8]
mov byte [edx + eax], bl
mov ecx, dword [esi + 0x14]
mov eax, dword [esi + 8]
inc ecx
mov dword [esi + 0x14], ecx
mov byte [ecx + eax], bl
mov ecx, dword [esi + 0x14]
mov eax, dword [esi + 8]
inc ecx
mov dword [esi + 0x14], ecx
mov byte [ecx + eax], bl
mov ecx, dword [esi + 0x14]
mov eax, dword [esi + 8]
inc ecx
mov dword [esi + 0x14], ecx
mov byte [ecx + eax], bl
mov ecx, dword [esi + 0x14]
mov eax, dword [esi + 8]
inc ecx
mov dword [esi + 0x14], ecx
mov byte [ecx + eax], bl
mov edx, dword [esi + 0x14]
mov eax, dword [esi + 0x84]
inc edx
mov dword [esi + 0x14], edx
cmp eax, 9
jne 0x71617e
mov cl, 2
jmp 0x716192
cmp dword [esi + 0x88], 2
jge 0x716190
cmp eax, 2
jl 0x716190
xor cl, cl
jmp 0x716192
mov cl, 4
mov eax, dword [esi + 8]
mov byte [edx + eax], cl
mov ecx, dword [esi + 0x14]
mov eax, dword [esi + 8]
inc ecx
mov dword [esi + 0x14], ecx
mov byte [ecx + eax], 0xa
inc dword [esi + 0x14]
mov dword [esi + 4], 0x71
mov ebp, dword [edi + 0x1c]
mov ecx, ebp
call fcn.0071a700
mov ebx, dword [edi + 0x10]
cmp dword [ebp + 0x14], ebx
cmovbe ebx, dword [ebp + 0x14]
test ebx, ebx
je 0x7161ee
push ebx
push dword [ebp + 0x10]
push dword [edi + 0xc]
call sub.VCRUNTIME140.dll_memcpy
add dword [edi + 0xc], ebx
add esp, 0xc
add dword [ebp + 0x10], ebx
add dword [edi + 0x14], ebx
sub dword [edi + 0x10], ebx
sub dword [ebp + 0x14], ebx
jne 0x7161ee
mov eax, dword [ebp + 8]
mov dword [ebp + 0x10], eax
cmp dword [esi + 0x14], 0
jne 0x715f20
jmp 0x716327
mov ecx, dword [ebx + 0x24]
mov eax, dword [ebx + 0x2c]
neg ecx
sbb cl, cl
and cl, 0x10
neg eax
sbb al, al
and al, 2
add cl, al
mov eax, dword [ebx + 0x1c]
neg eax
sbb al, al
and al, 8
add cl, al
mov eax, dword [ebx + 0x10]
neg eax
sbb al, al
and al, 4
add cl, al
cmp dword [ebx], 0
setne al
add cl, al
mov eax, dword [esi + 8]
mov byte [edx + eax], cl
mov edx, dword [esi + 0x14]
mov eax, dword [esi + 0x1c]
inc edx
mov ecx, dword [esi + 8]
mov dword [esi + 0x14], edx
movzx eax, byte [eax + 4]
mov byte [edx + ecx], al
mov edx, dword [esi + 0x14]
mov eax, dword [esi + 0x1c]
inc edx
mov ecx, dword [esi + 8]
mov dword [esi + 0x14], edx
movzx eax, byte [eax + 5]
mov byte [edx + ecx], al
mov edx, dword [esi + 0x14]
mov eax, dword [esi + 0x1c]
inc edx
mov ecx, dword [esi + 8]
mov dword [esi + 0x14], edx
movzx eax, byte [eax + 6]
mov byte [edx + ecx], al
mov edx, dword [esi + 0x14]
mov eax, dword [esi + 0x1c]
inc edx
mov ecx, dword [esi + 8]
mov dword [esi + 0x14], edx
movzx eax, byte [eax + 7]
mov byte [edx + ecx], al
mov edx, dword [esi + 0x14]
mov eax, dword [esi + 0x84]
inc edx
mov dword [esi + 0x14], edx
cmp eax, 9
jne 0x71629c
mov cl, 2
jmp 0x7162b0
cmp dword [esi + 0x88], 2
jge 0x7162ae
cmp eax, 2
jl 0x7162ae
xor cl, cl
jmp 0x7162b0
mov cl, 4
mov eax, dword [esi + 8]
mov byte [edx + eax], cl
mov edx, dword [esi + 0x14]
mov eax, dword [esi + 0x1c]
inc edx
mov ecx, dword [esi + 8]
mov dword [esi + 0x14], edx
mov al, byte [eax + 0xc]
mov byte [edx + ecx], al
mov edx, dword [esi + 0x14]
mov eax, dword [esi + 0x1c]
inc edx
mov dword [esi + 0x14], edx
cmp dword [eax + 0x10], 0
je 0x7162fe
mov ecx, dword [esi + 8]
movzx eax, byte [eax + 0x14]
mov byte [edx + ecx], al
mov edx, dword [esi + 0x14]
mov eax, dword [esi + 0x1c]
inc edx
mov ecx, dword [esi + 8]
mov dword [esi + 0x14], edx
movzx eax, byte [eax + 0x15]
mov byte [edx + ecx], al
mov edx, dword [esi + 0x14]
inc edx
mov dword [esi + 0x14], edx
mov eax, dword [esi + 0x1c]
cmp dword [eax + 0x2c], 0
je 0x716319
mov ecx, dword [edi + 0x30]
push edx
mov edx, dword [esi + 8]
call fcn.007152e0
add esp, 4
mov dword [edi + 0x30], eax
mov dword [esi + 0x20], 0
mov dword [esi + 4], 0x45
mov eax, dword [esi + 4]
cmp eax, 0x45
jne 0x716467
mov eax, dword [esi + 0x1c]
cmp dword [eax + 0x10], 0
je 0x71645e
movzx ecx, word [eax + 0x14]
sub ecx, dword [esi + 0x20]
mov ebp, dword [esi + 0x14]
mov edx, ebp
mov ebx, dword [esi + 0xc]
mov dword [esp + 0x14], ecx
lea eax, [ecx + ebp]
cmp eax, ebx
jbe 0x716411
mov edi, edi
mov eax, dword [esi + 0x1c]
sub ebx, edx
push ebx
mov dword [esp + 0x1c], ebx
mov eax, dword [eax + 0x10]
add eax, dword [esi + 0x20]
push eax
mov eax, dword [esi + 8]
add eax, edx
push eax
call sub.VCRUNTIME140.dll_memcpy
mov eax, dword [esi + 0x1c]
add esp, 0xc
mov ecx, dword [esi + 0xc]
mov dword [esi + 0x14], ecx
cmp dword [eax + 0x2c], 0
je 0x7163a8
cmp ecx, ebp
jbe 0x7163a8
mov edx, dword [esi + 8]
sub ecx, ebp
push ecx
mov ecx, dword [edi + 0x30]
add edx, ebp
call fcn.007152e0
add esp, 4
mov dword [edi + 0x30], eax
add dword [esi + 0x20], ebx
mov ebp, dword [edi + 0x1c]
mov ecx, ebp
call fcn.0071a700
mov ebx, dword [edi + 0x10]
cmp dword [ebp + 0x14], ebx
cmovbe ebx, dword [ebp + 0x14]
test ebx, ebx
je 0x7163e9
push ebx
push dword [ebp + 0x10]
push dword [edi + 0xc]
call sub.VCRUNTIME140.dll_memcpy
add dword [edi + 0xc], ebx
add esp, 0xc
add dword [ebp + 0x10], ebx
add dword [edi + 0x14], ebx
sub dword [edi + 0x10], ebx
sub dword [ebp + 0x14], ebx
jne 0x7163e9
mov eax, dword [ebp + 8]
mov dword [ebp + 0x10], eax
mov eax, dword [esi + 0x14]
test eax, eax
jne 0x715f20
mov ecx, dword [esp + 0x14]
xor ebp, ebp
sub ecx, dword [esp + 0x18]
xor edx, edx
mov ebx, dword [esi + 0xc]
mov dword [esp + 0x14], ecx
cmp ecx, ebx
ja 0x716360
mov edx, eax
mov eax, dword [esi + 0x1c]
push ecx
mov eax, dword [eax + 0x10]
add eax, dword [esi + 0x20]
push eax
mov eax, dword [esi + 8]
add eax, edx
push eax
call sub.VCRUNTIME140.dll_memcpy
mov ecx, dword [esp + 0x20]
add esp, 0xc
mov eax, dword [esi + 0x1c]
add ecx, dword [esi + 0x14]
mov dword [esi + 0x14], ecx
cmp dword [eax + 0x2c], 0
je 0x716457
cmp ecx, ebp
jbe 0x716457
mov edx, dword [esi + 8]
sub ecx, ebp
push ecx
mov ecx, dword [edi + 0x30]
add edx, ebp
call fcn.007152e0
add esp, 4
mov dword [edi + 0x30], eax
mov dword [esi + 0x20], 0
mov dword [esi + 4], 0x49
jmp 0x716470
cmp eax, 0x49
jne 0x716550
mov eax, dword [esi + 0x1c]
cmp dword [eax + 0x1c], 0
je 0x716547
mov ebp, dword [esi + 0x14]
mov ebx, ebp
cmp ebx, dword [esi + 0xc]
jne 0x7164f6
mov eax, dword [esi + 0x1c]
cmp dword [eax + 0x2c], 0
je 0x7164aa
cmp ebx, ebp
jbe 0x7164aa
mov edx, dword [esi + 8]
sub ebx, ebp
mov ecx, dword [edi + 0x30]
add edx, ebp
push ebx
call fcn.007152e0
add esp, 4
mov dword [edi + 0x30], eax
mov ebp, dword [edi + 0x1c]
mov ecx, ebp
call fcn.0071a700
mov ebx, dword [edi + 0x10]
cmp dword [ebp + 0x14], ebx
cmovbe ebx, dword [ebp + 0x14]
test ebx, ebx
je 0x7164e8
push ebx
push dword [ebp + 0x10]
push dword [edi + 0xc]
call sub.VCRUNTIME140.dll_memcpy
add dword [edi + 0xc], ebx
add esp, 0xc
add dword [ebp + 0x10], ebx
add dword [edi + 0x14], ebx
sub dword [edi + 0x10], ebx
sub dword [ebp + 0x14], ebx
jne 0x7164e8
mov eax, dword [ebp + 8]
mov dword [ebp + 0x10], eax
cmp dword [esi + 0x14], 0
jne 0x715f20
xor ebp, ebp
xor ebx, ebx
mov eax, dword [esi + 0x1c]
mov ecx, dword [esi + 0x20]
mov eax, dword [eax + 0x1c]
mov dl, byte [ecx + eax]
lea eax, [ecx + 1]
mov dword [esi + 0x20], eax
mov eax, dword [esi + 8]
mov byte [ebx + eax], dl
mov ebx, dword [esi + 0x14]
inc ebx
mov dword [esi + 0x14], ebx
test dl, dl
jne 0x716482
mov eax, dword [esi + 0x1c]
cmp dword [eax + 0x2c], 0
je 0x716540
cmp ebx, ebp
jbe 0x716540
mov edx, dword [esi + 8]
sub ebx, ebp
mov ecx, dword [edi + 0x30]
add edx, ebp
push ebx
call fcn.007152e0
add esp, 4
mov dword [edi + 0x30], eax
mov dword [esi + 0x20], 0
mov dword [esi + 4], 0x5b
jmp 0x716559
cmp eax, 0x5b
jne 0x716637
mov eax, dword [esi + 0x1c]
cmp dword [eax + 0x24], 0
je 0x71662e
mov ebp, dword [esi + 0x14]
mov ebx, ebp
jmp 0x716570
cmp ebx, dword [esi + 0xc]
jne 0x7165e4
mov eax, dword [esi + 0x1c]
cmp dword [eax + 0x2c], 0
je 0x716598
cmp ebx, ebp
jbe 0x716598
mov edx, dword [esi + 8]
sub ebx, ebp
mov ecx, dword [edi + 0x30]
add edx, ebp
push ebx
call fcn.007152e0
add esp, 4
mov dword [edi + 0x30], eax
mov ebp, dword [edi + 0x1c]
mov ecx, ebp
call fcn.0071a700
mov ebx, dword [edi + 0x10]
cmp dword [ebp + 0x14], ebx
cmovbe ebx, dword [ebp + 0x14]
test ebx, ebx
je 0x7165d6
push ebx
push dword [ebp + 0x10]
push dword [edi + 0xc]
call sub.VCRUNTIME140.dll_memcpy
add dword [edi + 0xc], ebx
add esp, 0xc
add dword [ebp + 0x10], ebx
add dword [edi + 0x14], ebx
sub dword [edi + 0x10], ebx
sub dword [ebp + 0x14], ebx
jne 0x7165d6
mov eax, dword [ebp + 8]
mov dword [ebp + 0x10], eax
cmp dword [esi + 0x14], 0
jne 0x715f20
xor ebp, ebp
xor ebx, ebx
mov eax, dword [esi + 0x1c]
mov ecx, dword [esi + 0x20]
mov eax, dword [eax + 0x24]
mov dl, byte [ecx + eax]
lea eax, [ecx + 1]
mov dword [esi + 0x20], eax
mov eax, dword [esi + 8]
mov byte [ebx + eax], dl
mov ebx, dword [esi + 0x14]
inc ebx
mov dword [esi + 0x14], ebx
test dl, dl
jne 0x716570
mov eax, dword [esi + 0x1c]
cmp dword [eax + 0x2c], 0
je 0x71662e
cmp ebx, ebp
jbe 0x71662e
mov edx, dword [esi + 8]
sub ebx, ebp
mov ecx, dword [edi + 0x30]
add edx, ebp
push ebx
call fcn.007152e0
add esp, 4
mov dword [edi + 0x30], eax
mov dword [esi + 4], 0x67
jmp 0x716640
cmp eax, 0x67
jne 0x71671f
mov eax, dword [esi + 0x1c]
cmp dword [eax + 0x2c], 0
je 0x7166d0
mov edx, dword [esi + 0x14]
lea eax, [edx + 2]
cmp eax, dword [esi + 0xc]
jbe 0x7166a1
mov ebp, dword [edi + 0x1c]
mov ecx, ebp
call fcn.0071a700
mov ebx, dword [edi + 0x10]
cmp dword [ebp + 0x14], ebx
cmovbe ebx, dword [ebp + 0x14]
test ebx, ebx
je 0x716696
push ebx
push dword [ebp + 0x10]
push dword [edi + 0xc]
call sub.VCRUNTIME140.dll_memcpy
add dword [edi + 0xc], ebx
add esp, 0xc
add dword [ebp + 0x10], ebx
add dword [edi + 0x14], ebx
sub dword [edi + 0x10], ebx
sub dword [ebp + 0x14], ebx
jne 0x716696
mov eax, dword [ebp + 8]
mov dword [ebp + 0x10], eax
mov edx, dword [esi + 0x14]
test edx, edx
jne 0x715f20
mov ecx, dword [esi + 8]
movzx eax, byte [edi + 0x30]
push 0
mov byte [edx + ecx], al
mov edx, dword [esi + 0x14]
mov ecx, dword [esi + 8]
inc edx
mov dword [esi + 0x14], edx
movzx eax, byte [edi + 0x31]
mov byte [edx + ecx], al
xor edx, edx
inc dword [esi + 0x14]
xor ecx, ecx
call fcn.007152e0
add esp, 4
mov dword [edi + 0x30], eax
mov dword [esi + 4], 0x71
mov ebp, dword [edi + 0x1c]
mov ecx, ebp
call fcn.0071a700
mov ebx, dword [edi + 0x10]
cmp dword [ebp + 0x14], ebx
cmovbe ebx, dword [ebp + 0x14]
test ebx, ebx
je 0x716715
push ebx
push dword [ebp + 0x10]
push dword [edi + 0xc]
call sub.VCRUNTIME140.dll_memcpy
add dword [edi + 0xc], ebx
add esp, 0xc
add dword [ebp + 0x10], ebx
add dword [edi + 0x14], ebx
sub dword [edi + 0x10], ebx
sub dword [ebp + 0x14], ebx
jne 0x716715
mov eax, dword [ebp + 8]
mov dword [ebp + 0x10], eax
cmp dword [esi + 0x14], 0
jne 0x715f20
cmp dword [edi + 4], 0
mov ebx, dword [esp + 0x10]
jne 0x716744
cmp dword [esi + 0x74], 0
jne 0x716744
test ebx, ebx
je 0x715f27
cmp dword [esi + 4], 0x29a
je 0x71692d
mov eax, dword [esi + 0x84]
test eax, eax
jne 0x716757
push ebx
push esi
call fcn.00716d50
jmp 0x71678b
mov ecx, dword [esi + 0x88]
cmp ecx, 2
jne 0x71676d
mov edx, ebx
mov ecx, esi
call fcn.00717ed0
jmp 0x71678e
cmp ecx, 3
jne 0x71677d
mov edx, ebx
mov ecx, esi
call fcn.00717b80
jmp 0x71678e
lea eax, [eax + eax*2]
mov eax, dword [eax*4 + 0x803438]
push ebx
push esi
call eax
add esp, 8
cmp eax, 2
je 0x716798
cmp eax, 3
jne 0x71679f
mov dword [esi + 4], 0x29a
test eax, eax
je 0x716a76
cmp eax, 2
je 0x716a76
cmp eax, 1
jne 0x71692d
cmp ebx, eax
jne 0x716885
mov ecx, dword [esi + 0x16bc]
lea ebx, [esi + 0x16b8]
mov eax, 2
shl ax, cl
or ax, word [ebx]
movzx edx, ax
cmp ecx, 0xd
jle 0x716824
mov ecx, dword [esi + 0x14]
mov eax, dword [esi + 8]
mov word [ebx], dx
mov byte [ecx + eax], dl
mov edx, dword [esi + 0x14]
mov ecx, dword [esi + 8]
inc edx
mov al, byte [ebx + 1]
mov dword [esi + 0x14], edx
mov byte [edx + ecx], al
mov cl, 0x10
movzx eax, word [esi + 0x16bc]
add dword [esi + 0x16bc], 0xfffffff3
sub cl, al
inc dword [esi + 0x14]
mov eax, 2
mov ebp, dword [esi + 0x16bc]
shr ax, cl
movzx edx, ax
jmp 0x71682d
lea ebp, [ecx + 3]
mov dword [esi + 0x16bc], ebp
movzx ecx, dx
mov eax, ebx
mov word [eax], dx
cmp ebp, 9
jle 0x71686e
mov ecx, dword [esi + 0x14]
mov eax, dword [esi + 8]
mov word [ebx], dx
mov byte [ecx + eax], dl
mov edx, dword [esi + 0x14]
mov ecx, dword [esi + 8]
inc edx
mov al, byte [ebx + 1]
mov dword [esi + 0x14], edx
mov byte [edx + ecx], al
xor eax, eax
inc dword [esi + 0x14]
mov ecx, esi
add dword [esi + 0x16bc], 0xfffffff7
mov word [ebx], ax
call fcn.0071a700
jmp 0x7168e1
lea eax, [ebp + 7]
mov dword [esi + 0x16bc], eax
mov eax, ecx
mov ecx, esi
mov word [ebx], ax
call fcn.0071a700
jmp 0x7168e1
cmp ebx, 5
je 0x7168e1
push 0
push 0
xor edx, edx
mov ecx, esi
call fcn.0071b680
add esp, 8
cmp ebx, 3
jne 0x7168e1
mov eax, dword [esi + 0x44]
xor edx, edx
mov ecx, dword [esi + 0x4c]
mov word [eax + ecx*2 - 2], dx
mov eax, dword [esi + 0x4c]
lea eax, [eax*2 - 2]
push eax
push edx
push dword [esi + 0x44]
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
cmp dword [esi + 0x74], 0
jne 0x7168e1
mov dword [esi + 0x6c], 0
mov dword [esi + 0x5c], 0
mov dword [esi + 0x16b4], 0
mov ebp, dword [edi + 0x1c]
mov ecx, ebp
call fcn.0071a700
mov ebx, dword [edi + 0x10]
cmp dword [ebp + 0x14], ebx
cmovbe ebx, dword [ebp + 0x14]
test ebx, ebx
je 0x71691f
push ebx
push dword [ebp + 0x10]
push dword [edi + 0xc]
call sub.VCRUNTIME140.dll_memcpy
add dword [edi + 0xc], ebx
add esp, 0xc
add dword [ebp + 0x10], ebx
add dword [edi + 0x14], ebx
sub dword [edi + 0x10], ebx
sub dword [ebp + 0x14], ebx
jne 0x71691f
mov eax, dword [ebp + 8]
mov dword [ebp + 0x10], eax
cmp dword [edi + 0x10], 0
je 0x715f20
mov ebx, dword [esp + 0x10]
cmp ebx, 4
jne 0x715f27
mov eax, dword [esi + 0x18]
test eax, eax
jg 0x716948
pop ebp
pop esi
pop edi
lea eax, [ebx - 3]
pop ebx
add esp, 0x10
ret
cmp eax, 2
jne 0x7169d7
mov edx, dword [esi + 0x14]
movzx eax, byte [edi + 0x30]
mov ecx, dword [esi + 8]
mov byte [edx + ecx], al
mov edx, dword [esi + 0x14]
mov ecx, dword [esi + 8]
inc edx
mov dword [esi + 0x14], edx
movzx eax, byte [edi + 0x31]
mov byte [edx + ecx], al
mov edx, dword [esi + 0x14]
mov ecx, dword [esi + 8]
inc edx
mov dword [esi + 0x14], edx
movzx eax, byte [edi + 0x32]
mov byte [edx + ecx], al
mov edx, dword [esi + 0x14]
mov ecx, dword [esi + 8]
inc edx
mov dword [esi + 0x14], edx
movzx eax, byte [edi + 0x33]
mov byte [edx + ecx], al
mov edx, dword [esi + 0x14]
mov ecx, dword [esi + 8]
inc edx
mov dword [esi + 0x14], edx
movzx eax, byte [edi + 8]
mov byte [edx + ecx], al
mov edx, dword [esi + 0x14]
mov ecx, dword [esi + 8]
inc edx
mov dword [esi + 0x14], edx
movzx eax, byte [edi + 9]
mov byte [edx + ecx], al
mov edx, dword [esi + 0x14]
mov ecx, dword [esi + 8]
inc edx
mov dword [esi + 0x14], edx
movzx eax, byte [edi + 0xa]
mov byte [edx + ecx], al
mov edx, dword [esi + 0x14]
mov ecx, dword [esi + 8]
inc edx
mov dword [esi + 0x14], edx
movzx eax, byte [edi + 0xb]
mov byte [edx + ecx], al
jmp 0x716a19
movzx ebx, word [edi + 0x32]
mov ecx, dword [esi + 0x14]
mov edx, ebx
mov eax, dword [esi + 8]
shr edx, 8
mov byte [ecx + eax], dl
mov ecx, dword [esi + 0x14]
mov eax, dword [esi + 8]
inc ecx
mov dword [esi + 0x14], ecx
mov byte [ecx + eax], bl
mov edx, dword [esi + 0x14]
mov eax, dword [esi + 8]
inc edx
mov dword [esi + 0x14], edx
movzx ebx, word [edi + 0x30]
mov ecx, ebx
shr ecx, 8
mov byte [edx + eax], cl
mov ecx, dword [esi + 0x14]
mov eax, dword [esi + 8]
inc ecx
mov dword [esi + 0x14], ecx
mov byte [ecx + eax], bl
inc dword [esi + 0x14]
mov ebp, dword [edi + 0x1c]
mov ecx, ebp
call fcn.0071a700
mov ebx, dword [edi + 0x10]
cmp dword [ebp + 0x14], ebx
cmovbe ebx, dword [ebp + 0x14]
test ebx, ebx
je 0x716a5a
push ebx
push dword [ebp + 0x10]
push dword [edi + 0xc]
call sub.VCRUNTIME140.dll_memcpy
add dword [edi + 0xc], ebx
add esp, 0xc
add dword [ebp + 0x10], ebx
add dword [edi + 0x14], ebx
sub dword [edi + 0x10], ebx
sub dword [ebp + 0x14], ebx
jne 0x716a5a
mov eax, dword [ebp + 8]
mov dword [ebp + 0x10], eax
mov eax, dword [esi + 0x18]
test eax, eax
jle 0x716a66
neg eax
mov dword [esi + 0x18], eax
xor eax, eax
cmp dword [esi + 0x14], eax
pop ebp
pop esi
pop edi
sete al
pop ebx
add esp, 0x10
ret
cmp dword [edi + 0x10], 0
jne 0x715f27
pop ebp
mov dword [esi + 0x28], 0xffffffff
xor eax, eax
pop esi
pop edi
pop ebx
add esp, 0x10
ret
pop esi
mov dword [edi + 0x18], str.stream_error
mov eax, 0xfffffffe
pop edi
pop ebx
add esp, 0x10
ret
pop edi
mov eax, 0xfffffffe
pop ebx
add esp, 0x10
ret