Function at 0x102d1f20
Capabilities:
Compress data via zlib inflate or deflate

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1c
push esi
mov esi, ecx
mov dword [ebp - 0xc], esi
test esi, esi
je 0x102d2b32
cmp dword [esi + 0x20], 0
je 0x102d2b32
cmp dword [esi + 0x24], 0
je 0x102d2b32
mov eax, dword [esi + 0x1c]
test eax, eax
je 0x102d2b32
cmp dword [eax], esi
jne 0x102d2b32
mov eax, dword [eax + 4]
cmp eax, 0x2a
je 0x102d1f8c
cmp eax, 0x39
je 0x102d1f8c
cmp eax, 0x45
je 0x102d1f8c
cmp eax, 0x49
je 0x102d1f8c
cmp eax, 0x5b
je 0x102d1f8c
cmp eax, 0x67
je 0x102d1f8c
cmp eax, 0x71
je 0x102d1f8c
cmp eax, 0x29a
jne 0x102d2b32
cmp dword [esi + 0xc], 0
push edi
mov edi, dword [esi + 0x1c]
je 0x102d2b20
cmp dword [esi + 4], 0
je 0x102d1fa9
cmp dword [esi], 0
je 0x102d2b20
cmp dword [esi + 0x10], 0
push ebx
je 0x102d2023
cmp dword [edi + 0x14], 0
mov dword [edi + 0x28], 4
je 0x102d200f
mov ebx, dword [esi + 0x1c]
mov ecx, ebx
mov dword [ebp - 0x10], ebx
call fcn.102d73c0
mov eax, dword [ebx + 0x14]
mov ebx, dword [esi + 0x10]
cmp eax, ebx
cmovbe ebx, eax
test ebx, ebx
je 0x102d2005
mov eax, dword [ebp - 0x10]
push ebx
push dword [eax + 0x10]
push dword [esi + 0xc]
call sub.VCRUNTIME140.dll_memcpy
mov ecx, dword [ebp - 0x10]
add esp, 0xc
add dword [esi + 0xc], ebx
add dword [ecx + 0x10], ebx
add dword [esi + 0x14], ebx
sub dword [esi + 0x10], ebx
sub dword [ecx + 0x14], ebx
jne 0x102d2005
mov eax, dword [ecx + 8]
mov dword [ecx + 0x10], eax
cmp dword [esi + 0x10], 0
je 0x102d2b10
mov eax, dword [edi + 4]
cmp eax, 0x29a
jne 0x102d2036
cmp dword [esi + 4], 0
je 0x102d219a
pop ebx
pop edi
mov dword [esi + 0x18], str.buffer_error
mov eax, 0xfffffffb
pop esi
mov esp, ebp
pop ebp
ret
cmp eax, 0x2a
jne 0x102d219a
cmp dword [edi + 0x18], 0
jne 0x102d2051
mov dword [edi + 4], 0x71
jmp 0x102d219a
mov ecx, dword [edi + 0x30]
shl ecx, 0xc
sub ecx, 0x7800
cmp dword [edi + 0x88], 2
mov ebx, ecx
jge 0x102d2098
mov eax, dword [edi + 0x84]
cmp eax, 2
jl 0x102d2098
cmp eax, 6
jge 0x102d2082
mov eax, 0x40
lea edx, [eax + 0x20]
jmp 0x102d209d
jne 0x102d208e
mov eax, 0x80
lea edx, [eax + 0x20]
jmp 0x102d209d
mov eax, 0xc0
lea edx, [eax + 0x20]
jmp 0x102d209d
xor eax, eax
lea edx, [eax + 0x20]
or ecx, eax
cmp dword [edi + 0x6c], 0
je 0x102d20a9
mov ecx, ebx
or ecx, edx
mov eax, 0x8421085
mul ecx
mov eax, dword [edi + 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 [edi + 0x14]
mov edx, ebx
shr edx, 8
mov byte [ecx + eax], dl
inc dword [edi + 0x14]
mov ecx, dword [edi + 0x14]
mov eax, dword [edi + 8]
mov byte [ecx + eax], bl
mov eax, dword [edi + 0x14]
inc eax
cmp dword [edi + 0x6c], 0
mov dword [ebp - 0x18], eax
mov dword [edi + 0x14], eax
je 0x102d2130
movzx edx, word [esi + 0x32]
mov eax, dword [edi + 8]
mov ecx, edx
mov esi, dword [ebp - 0x18]
shr ecx, 8
mov byte [esi + eax], cl
inc dword [edi + 0x14]
mov ecx, dword [edi + 0x14]
mov eax, dword [edi + 8]
mov esi, dword [ebp - 0xc]
mov byte [ecx + eax], dl
inc dword [edi + 0x14]
movzx ebx, word [esi + 0x30]
mov edx, dword [edi + 0x14]
mov ecx, ebx
mov eax, dword [edi + 8]
shr ecx, 8
mov byte [edx + eax], cl
inc dword [edi + 0x14]
mov ecx, dword [edi + 0x14]
mov eax, dword [edi + 8]
mov byte [ecx + eax], bl
inc dword [edi + 0x14]
push 0
xor edx, edx
xor ecx, ecx
call fcn.102d13d0
mov dword [esi + 0x30], eax
add esp, 4
mov dword [edi + 4], 0x71
mov ebx, dword [esi + 0x1c]
mov ecx, ebx
mov dword [ebp - 0x10], ebx
call fcn.102d73c0
mov eax, dword [ebx + 0x14]
mov ebx, dword [esi + 0x10]
cmp eax, ebx
cmovbe ebx, eax
test ebx, ebx
je 0x102d2190
mov eax, dword [ebp - 0x10]
push ebx
push dword [eax + 0x10]
push dword [esi + 0xc]
call sub.VCRUNTIME140.dll_memcpy
mov ecx, dword [ebp - 0x10]
add esp, 0xc
add dword [esi + 0xc], ebx
add dword [ecx + 0x10], ebx
add dword [esi + 0x14], ebx
sub dword [esi + 0x10], ebx
sub dword [ecx + 0x14], ebx
jne 0x102d2190
mov eax, dword [ecx + 8]
mov dword [ecx + 0x10], eax
cmp dword [edi + 0x14], 0
jne 0x102d2b10
cmp dword [edi + 4], 0x39
lea ebx, [edi + 8]
mov dword [ebp - 4], ebx
jne 0x102d242e
push 0
xor edx, edx
xor ecx, ecx
call fcn.102d1650
mov dword [esi + 0x30], eax
lea edx, [edi + 8]
mov ecx, dword [edi + 0x14]
add esp, 4
mov eax, dword [edx]
mov dword [ebp - 4], edx
mov byte [ecx + eax], 0x1f
inc dword [edi + 0x14]
mov ecx, dword [edi + 0x14]
mov eax, dword [edx]
mov byte [ecx + eax], 0x8b
inc dword [edi + 0x14]
mov ecx, dword [edi + 0x14]
mov eax, dword [edx]
mov byte [ecx + eax], 8
mov ecx, dword [edi + 0x14]
mov eax, dword [edi + 0x1c]
inc ecx
mov dword [ebp - 0x18], ecx
mov dword [edi + 0x14], ecx
test eax, eax
jne 0x102d22db
mov eax, dword [edx]
mov byte [ecx + eax], 0
mov ecx, dword [edi + 0x14]
mov eax, dword [edx]
inc ecx
mov dword [edi + 0x14], ecx
mov byte [ecx + eax], 0
mov ecx, dword [edi + 0x14]
mov eax, dword [edx]
inc ecx
mov dword [edi + 0x14], ecx
mov byte [ecx + eax], 0
mov ecx, dword [edi + 0x14]
mov eax, dword [edx]
inc ecx
mov dword [edi + 0x14], ecx
mov byte [ecx + eax], 0
mov ecx, dword [edi + 0x14]
mov eax, dword [edx]
inc ecx
mov dword [edi + 0x14], ecx
mov byte [ecx + eax], 0
mov eax, dword [edi + 0x14]
inc eax
mov dword [ebp - 0x18], eax
mov dword [edi + 0x14], eax
mov eax, dword [edi + 0x84]
cmp eax, 9
jne 0x102d224a
mov cl, 2
jmp 0x102d225e
cmp dword [edi + 0x88], 2
jge 0x102d225c
cmp eax, 2
jl 0x102d225c
xor cl, cl
jmp 0x102d225e
mov cl, 4
mov eax, dword [edx]
mov esi, dword [ebp - 0x18]
mov byte [esi + eax], cl
inc dword [edi + 0x14]
mov ecx, dword [edi + 0x14]
mov eax, dword [edx]
mov esi, dword [ebp - 0xc]
mov byte [ecx + eax], 0xa
inc dword [edi + 0x14]
mov dword [edi + 4], 0x71
mov eax, dword [esi + 0x1c]
mov ecx, eax
mov dword [ebp - 0x10], eax
call fcn.102d73c0
mov edx, dword [ebp - 0x10]
mov ecx, dword [esi + 0x10]
cmp dword [edx + 0x14], ecx
cmovbe ecx, dword [edx + 0x14]
mov dword [ebp - 0x18], ecx
test ecx, ecx
je 0x102d22cc
push ecx
push dword [edx + 0x10]
push dword [esi + 0xc]
call sub.VCRUNTIME140.dll_memcpy
mov eax, dword [ebp - 0x18]
add esp, 0xc
mov ecx, dword [ebp - 0x10]
add dword [esi + 0xc], eax
add dword [ecx + 0x10], eax
add dword [esi + 0x14], eax
sub dword [esi + 0x10], eax
sub dword [ecx + 0x14], eax
jne 0x102d22cc
mov eax, dword [ecx + 8]
mov dword [ecx + 0x10], eax
cmp dword [edi + 0x14], 0
jne 0x102d2b10
jmp 0x102d242e
mov ecx, dword [eax + 0x24]
mov eax, dword [eax + 0x2c]
neg ecx
sbb cl, cl
and cl, 0x10
neg eax
sbb al, al
and al, 2
add cl, al
mov eax, dword [edi + 0x1c]
mov eax, dword [eax + 0x1c]
neg eax
sbb al, al
and al, 8
add cl, al
mov eax, dword [edi + 0x1c]
mov eax, dword [eax + 0x10]
neg eax
sbb al, al
and al, 4
add cl, al
mov eax, dword [edi + 0x1c]
cmp dword [eax], 0
setne al
add cl, al
mov eax, dword [edx]
mov edx, dword [ebp - 0x18]
mov byte [edx + eax], cl
mov edx, dword [edi + 0x14]
mov eax, dword [edi + 0x1c]
inc edx
mov ecx, dword [ebp - 4]
mov dword [edi + 0x14], edx
movzx eax, byte [eax + 4]
mov ecx, dword [ecx]
mov byte [edx + ecx], al
mov edx, dword [edi + 0x14]
mov eax, dword [edi + 0x1c]
inc edx
mov ecx, dword [ebp - 4]
mov dword [edi + 0x14], edx
movzx eax, byte [eax + 5]
mov ecx, dword [ecx]
mov byte [edx + ecx], al
mov edx, dword [edi + 0x14]
mov ecx, dword [ebp - 4]
inc edx
mov eax, dword [edi + 0x1c]
mov dword [edi + 0x14], edx
mov ecx, dword [ecx]
movzx eax, byte [eax + 6]
mov byte [edx + ecx], al
mov edx, dword [edi + 0x14]
mov ecx, dword [ebp - 4]
inc edx
mov eax, dword [edi + 0x1c]
mov dword [edi + 0x14], edx
mov ecx, dword [ecx]
movzx eax, byte [eax + 7]
mov byte [edx + ecx], al
mov eax, dword [edi + 0x14]
inc eax
mov dword [ebp - 0x18], eax
mov dword [edi + 0x14], eax
mov eax, dword [edi + 0x84]
cmp eax, 9
jne 0x102d2390
mov dl, 2
jmp 0x102d23a4
cmp dword [edi + 0x88], 2
jge 0x102d23a2
cmp eax, 2
jl 0x102d23a2
xor dl, dl
jmp 0x102d23a4
mov dl, 4
mov ecx, dword [ebp - 4]
mov esi, dword [ebp - 0x18]
mov eax, dword [ecx]
mov byte [esi + eax], dl
inc dword [edi + 0x14]
mov eax, dword [edi + 0x1c]
mov edx, dword [edi + 0x14]
mov ecx, dword [ecx]
mov esi, dword [ebp - 0xc]
mov al, byte [eax + 0xc]
mov byte [edx + ecx], al
mov edx, dword [edi + 0x14]
mov eax, dword [edi + 0x1c]
inc edx
mov dword [edi + 0x14], edx
cmp dword [eax + 0x10], 0
je 0x102d23fd
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
mov eax, dword [edi + 0x1c]
movzx eax, byte [eax + 0x14]
mov byte [edx + ecx], al
inc dword [edi + 0x14]
mov ecx, dword [ebp - 4]
mov eax, dword [edi + 0x1c]
mov edx, dword [edi + 0x14]
mov ecx, dword [ecx]
movzx eax, byte [eax + 0x15]
mov byte [edx + ecx], al
inc dword [edi + 0x14]
mov edx, dword [edi + 0x14]
mov eax, dword [edi + 0x1c]
cmp dword [eax + 0x2c], 0
je 0x102d241a
mov eax, dword [ebp - 4]
mov ecx, dword [esi + 0x30]
push edx
mov edx, dword [eax]
call fcn.102d1650
add esp, 4
mov dword [esi + 0x30], eax
mov eax, dword [ebp - 4]
mov dword [edi + 0x20], 0
mov dword [edi + 4], 0x45
mov dword [ebp - 4], eax
mov ecx, dword [edi + 4]
lea edx, [edi + 0x1c]
mov dword [ebp - 8], edx
cmp ecx, 0x45
jne 0x102d25b0
mov eax, dword [edx]
cmp dword [eax + 0x10], 0
je 0x102d25a7
movzx eax, word [eax + 0x14]
sub eax, dword [edi + 0x20]
mov ecx, dword [edi + 0x14]
mov ebx, dword [edi + 0xc]
mov dword [ebp - 0xc], eax
add eax, ecx
mov dword [ebp - 0x10], ecx
mov dword [ebp - 0x18], ecx
cmp eax, ebx
jbe 0x102d254f
mov eax, ecx
lea ecx, [edi + 8]
mov dword [ebp - 0x14], eax
mov dword [ebp - 4], ecx
jmp 0x102d2485
mov ecx, dword [ebp - 4]
xor eax, eax
sub ebx, eax
mov eax, dword [edx]
push ebx
mov dword [ebp - 0x1c], ebx
mov eax, dword [eax + 0x10]
add eax, dword [edi + 0x20]
push eax
mov eax, dword [ecx]
add eax, dword [ebp - 0x14]
push eax
call sub.VCRUNTIME140.dll_memcpy
mov eax, dword [edi + 0x1c]
add esp, 0xc
mov ecx, dword [edi + 0xc]
mov dword [edi + 0x14], ecx
cmp dword [eax + 0x2c], 0
je 0x102d24d0
mov eax, dword [ebp - 0x10]
cmp ecx, eax
jbe 0x102d24d0
sub ecx, eax
push ecx
mov ecx, dword [ebp - 4]
mov edx, dword [ecx]
mov ecx, dword [esi + 0x30]
add edx, eax
call fcn.102d1650
add esp, 4
mov dword [esi + 0x30], eax
add dword [edi + 0x20], ebx
mov ebx, dword [esi + 0x1c]
mov ecx, ebx
mov dword [ebp - 0x10], ebx
call fcn.102d73c0
mov eax, dword [ebx + 0x14]
mov ebx, dword [esi + 0x10]
cmp eax, ebx
cmovbe ebx, eax
test ebx, ebx
je 0x102d251b
mov eax, dword [ebp - 0x10]
push ebx
push dword [eax + 0x10]
push dword [esi + 0xc]
call sub.VCRUNTIME140.dll_memcpy
mov ecx, dword [ebp - 0x10]
add esp, 0xc
add dword [esi + 0xc], ebx
add dword [ecx + 0x10], ebx
add dword [esi + 0x14], ebx
sub dword [esi + 0x10], ebx
sub dword [ecx + 0x14], ebx
jne 0x102d251b
mov eax, dword [ecx + 8]
mov dword [ecx + 0x10], eax
mov eax, dword [edi + 0x14]
mov dword [ebp - 0x18], eax
test eax, eax
jne 0x102d2b10
mov ebx, dword [edi + 0xc]
lea edx, [edi + 0x1c]
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0xc]
sub eax, dword [ebp - 0x1c]
mov dword [ebp - 0xc], eax
mov dword [ebp - 0x14], 0
cmp eax, ebx
ja 0x102d2480
lea edx, [edi + 0x1c]
jmp 0x102d2552
mov eax, dword [ebp - 0xc]
mov ebx, dword [ebp - 4]
push eax
mov eax, dword [edx]
mov eax, dword [eax + 0x10]
add eax, dword [edi + 0x20]
push eax
mov eax, dword [ebx]
add eax, dword [ebp - 0x18]
push eax
call sub.VCRUNTIME140.dll_memcpy
mov ecx, dword [ebp - 0xc]
lea edx, [edi + 0x1c]
mov eax, dword [edx]
add esp, 0xc
add ecx, dword [edi + 0x14]
mov dword [edi + 0x14], ecx
cmp dword [eax + 0x2c], 0
je 0x102d25a0
mov eax, dword [ebp - 0x10]
cmp ecx, eax
jbe 0x102d25a0
mov edx, dword [ebx]
sub ecx, eax
push ecx
mov ecx, dword [esi + 0x30]
add edx, eax
call fcn.102d1650
add esp, 4
mov dword [esi + 0x30], eax
lea edx, [edi + 0x1c]
mov dword [edi + 0x20], 0
mov dword [edi + 4], 0x49
jmp 0x102d25b9
cmp ecx, 0x49
jne 0x102d26c5
mov eax, dword [edx]
cmp dword [eax + 0x1c], 0
je 0x102d26b4
mov eax, dword [edi + 0x14]
lea ecx, [edi + 8]
mov dword [ebp - 0x10], eax
mov ebx, eax
cmp ebx, dword [edi + 0xc]
jne 0x102d265b
mov eax, dword [edx]
cmp dword [eax + 0x2c], 0
je 0x102d25fd
mov eax, dword [ebp - 0x10]
cmp ebx, eax
jbe 0x102d25fd
mov edx, dword [ecx]
sub ebx, eax
mov ecx, dword [esi + 0x30]
add edx, eax
push ebx
call fcn.102d1650
add esp, 4
mov dword [esi + 0x30], eax
mov ebx, dword [esi + 0x1c]
mov ecx, ebx
mov dword [ebp - 0x18], ebx
call fcn.102d73c0
mov eax, dword [ebx + 0x14]
mov ebx, dword [esi + 0x10]
cmp eax, ebx
cmovbe ebx, eax
test ebx, ebx
je 0x102d2645
mov eax, dword [ebp - 0x18]
push ebx
push dword [eax + 0x10]
push dword [esi + 0xc]
call sub.VCRUNTIME140.dll_memcpy
mov ecx, dword [ebp - 0x18]
add esp, 0xc
add dword [esi + 0xc], ebx
add dword [ecx + 0x10], ebx
add dword [esi + 0x14], ebx
sub dword [esi + 0x10], ebx
sub dword [ecx + 0x14], ebx
jne 0x102d2645
mov eax, dword [ecx + 8]
mov dword [ecx + 0x10], eax
cmp dword [edi + 0x14], 0
jne 0x102d2b10
mov edx, dword [ebp - 8]
xor ebx, ebx
mov dword [ebp - 0x10], 0
mov eax, dword [edx]
mov ecx, dword [edi + 0x20]
mov eax, dword [eax + 0x1c]
mov dl, byte [ecx + eax]
lea eax, [ecx + 1]
mov dword [edi + 0x20], eax
lea ecx, [edi + 8]
mov eax, dword [ecx]
mov byte [ebx + eax], dl
mov ebx, dword [edi + 0x14]
inc ebx
test dl, dl
mov edx, dword [ebp - 8]
mov dword [edi + 0x14], ebx
jne 0x102d25d0
mov eax, dword [edx]
cmp dword [eax + 0x2c], 0
je 0x102d26ad
mov eax, dword [ebp - 0x10]
cmp ebx, eax
jbe 0x102d26ad
mov edx, dword [ecx]
sub ebx, eax
mov ecx, dword [esi + 0x30]
add edx, eax
push ebx
call fcn.102d1650
mov edx, dword [ebp - 8]
add esp, 4
mov dword [esi + 0x30], eax
mov dword [edi + 0x20], 0
mov eax, edi
mov dword [edi + 4], 0x5b
add eax, 0xc
mov dword [ebp - 0xc], eax
jmp 0x102d26d4
lea eax, [edi + 0xc]
mov dword [ebp - 0xc], eax
cmp ecx, 0x5b
jne 0x102d27dc
mov eax, dword [edx]
cmp dword [eax + 0x24], 0
je 0x102d27d0
mov ecx, dword [edi + 0x14]
mov ebx, ecx
mov dword [ebp - 0x10], ecx
nop dword [eax + eax]
mov eax, dword [ebp - 0xc]
cmp ebx, dword [eax]
jne 0x102d277b
mov eax, dword [edx]
cmp dword [eax + 0x2c], 0
je 0x102d271d
cmp ebx, ecx
jbe 0x102d271d
mov edx, dword [edi + 8]
sub ebx, ecx
add edx, ecx
mov ecx, dword [esi + 0x30]
push ebx
call fcn.102d1650
add esp, 4
mov dword [esi + 0x30], eax
mov ebx, dword [esi + 0x1c]
mov ecx, ebx
mov dword [ebp - 0x18], ebx
call fcn.102d73c0
mov eax, dword [ebx + 0x14]
mov ebx, dword [esi + 0x10]
cmp eax, ebx
cmovbe ebx, eax
test ebx, ebx
je 0x102d2765
mov eax, dword [ebp - 0x18]
push ebx
push dword [eax + 0x10]
push dword [esi + 0xc]
call sub.VCRUNTIME140.dll_memcpy
mov ecx, dword [ebp - 0x18]
add esp, 0xc
add dword [esi + 0xc], ebx
add dword [ecx + 0x10], ebx
add dword [esi + 0x14], ebx
sub dword [esi + 0x10], ebx
sub dword [ecx + 0x14], ebx
jne 0x102d2765
mov eax, dword [ecx + 8]
mov dword [ecx + 0x10], eax
cmp dword [edi + 0x14], 0
jne 0x102d2b10
mov edx, dword [ebp - 8]
xor ebx, ebx
mov dword [ebp - 0x10], 0
mov eax, dword [edx]
mov ecx, dword [edi + 0x20]
mov eax, dword [eax + 0x24]
mov dl, byte [ecx + eax]
lea eax, [ecx + 1]
mov dword [edi + 0x20], eax
mov eax, dword [edi + 8]
mov byte [ebx + eax], dl
mov ebx, dword [edi + 0x14]
inc ebx
test dl, dl
mov edx, dword [ebp - 8]
mov dword [edi + 0x14], ebx
je 0x102d27a8
mov ecx, dword [ebp - 0x10]
jmp 0x102d26f0
mov eax, dword [edx]
cmp dword [eax + 0x2c], 0
je 0x102d27d0
mov eax, dword [ebp - 0x10]
cmp ebx, eax
jbe 0x102d27d0
mov edx, dword [edi + 8]
sub ebx, eax
mov ecx, dword [esi + 0x30]
add edx, eax
push ebx
call fcn.102d1650
mov edx, dword [ebp - 8]
add esp, 4
mov dword [esi + 0x30], eax
mov dword [edi + 4], 0x67
lea ebx, [edi + 8]
jmp 0x102d27e5
cmp ecx, 0x67
jne 0x102d28e0
mov eax, dword [edx]
cmp dword [eax + 0x2c], 0
je 0x102d2882
mov edx, dword [edi + 0x14]
mov ecx, dword [ebp - 0xc]
lea eax, [edx + 2]
cmp eax, dword [ecx]
jbe 0x102d2856
mov eax, dword [esi + 0x1c]
mov ecx, eax
mov dword [ebp - 0x18], eax
call fcn.102d73c0
mov edx, dword [ebp - 0x18]
mov ecx, dword [esi + 0x10]
cmp dword [edx + 0x14], ecx
cmovbe ecx, dword [edx + 0x14]
mov dword [ebp - 0x1c], ecx
test ecx, ecx
je 0x102d284b
push ecx
push dword [edx + 0x10]
push dword [esi + 0xc]
call sub.VCRUNTIME140.dll_memcpy
mov eax, dword [ebp - 0x1c]
add esp, 0xc
mov ecx, dword [ebp - 0x18]
add dword [esi + 0xc], eax
add dword [ecx + 0x10], eax
add dword [esi + 0x14], eax
sub dword [esi + 0x10], eax
sub dword [ecx + 0x14], eax
jne 0x102d284b
mov eax, dword [ecx + 8]
mov dword [ecx + 0x10], eax
mov edx, dword [edi + 0x14]
test edx, edx
jne 0x102d2b10
mov ecx, dword [ebx]
movzx eax, byte [esi + 0x30]
push 0
mov byte [edx + ecx], al
inc dword [edi + 0x14]
mov edx, dword [edi + 0x14]
mov ecx, dword [ebx]
movzx eax, byte [esi + 0x31]
mov byte [edx + ecx], al
xor edx, edx
inc dword [edi + 0x14]
xor ecx, ecx
call fcn.102d1650
add esp, 4
mov dword [esi + 0x30], eax
mov dword [edi + 4], 0x71
mov eax, dword [esi + 0x1c]
mov ecx, eax
mov dword [ebp - 0x18], eax
call fcn.102d73c0
mov edx, dword [ebp - 0x18]
mov ecx, dword [esi + 0x10]
cmp dword [edx + 0x14], ecx
cmovbe ecx, dword [edx + 0x14]
mov dword [ebp - 0x1c], ecx
test ecx, ecx
je 0x102d28d6
push ecx
push dword [edx + 0x10]
push dword [esi + 0xc]
call sub.VCRUNTIME140.dll_memcpy
mov eax, dword [ebp - 0x1c]
add esp, 0xc
mov ecx, dword [ebp - 0x18]
add dword [esi + 0xc], eax
add dword [ecx + 0x10], eax
add dword [esi + 0x14], eax
sub dword [esi + 0x10], eax
sub dword [ecx + 0x14], eax
jne 0x102d28d6
mov eax, dword [ecx + 8]
mov dword [ecx + 0x10], eax
cmp dword [edi + 0x14], 0
jne 0x102d2b10
cmp dword [esi + 4], 0
jne 0x102d28f9
cmp dword [edi + 0x74], 0
jne 0x102d28f9
cmp dword [edi + 4], 0x29a
je 0x102d29cf
mov eax, dword [edi + 0x84]
test eax, eax
jne 0x102d290d
push 4
push edi
call fcn.102d2ff0
jmp 0x102d293e
mov ecx, dword [edi + 0x88]
cmp ecx, 2
jne 0x102d2921
mov ecx, edi
call fcn.102d4080
jmp 0x102d2941
cmp ecx, 3
jne 0x102d292f
mov ecx, edi
call fcn.102d3dd0
jmp 0x102d2941
lea eax, [eax + eax*2]
mov eax, dword [eax*4 + 0x102fca00]
push 4
push edi
call eax
add esp, 8
cmp eax, 2
je 0x102d294b
cmp eax, 3
jne 0x102d2952
mov dword [edi + 4], 0x29a
test eax, eax
je 0x102d2b0a
cmp eax, 2
je 0x102d2b0a
cmp eax, 1
jne 0x102d29cf
push 0
push 0
xor edx, edx
mov ecx, edi
call fcn.102d6ae0
mov eax, dword [esi + 0x1c]
add esp, 8
mov ecx, eax
mov dword [ebp - 0x18], eax
call fcn.102d73c0
mov edx, dword [ebp - 0x18]
mov ecx, dword [esi + 0x10]
cmp dword [edx + 0x14], ecx
cmovbe ecx, dword [edx + 0x14]
mov dword [ebp - 0x1c], ecx
test ecx, ecx
je 0x102d29c5
push ecx
push dword [edx + 0x10]
push dword [esi + 0xc]
call sub.VCRUNTIME140.dll_memcpy
mov eax, dword [ebp - 0x1c]
add esp, 0xc
mov ecx, dword [ebp - 0x18]
add dword [esi + 0xc], eax
add dword [ecx + 0x10], eax
add dword [esi + 0x14], eax
sub dword [esi + 0x10], eax
sub dword [ecx + 0x14], eax
jne 0x102d29c5
mov eax, dword [ecx + 8]
mov dword [ecx + 0x10], eax
cmp dword [esi + 0x10], 0
je 0x102d2b10
mov eax, dword [edi + 0x18]
test eax, eax
jg 0x102d29e2
pop ebx
pop edi
mov eax, 1
pop esi
mov esp, ebp
pop ebp
ret
cmp eax, 2
jne 0x102d2a62
mov edx, dword [edi + 0x14]
movzx eax, byte [esi + 0x30]
mov ecx, dword [ebx]
mov byte [edx + ecx], al
mov edx, dword [edi + 0x14]
mov ecx, dword [ebx]
inc edx
mov dword [edi + 0x14], edx
movzx eax, byte [esi + 0x31]
mov byte [edx + ecx], al
mov edx, dword [edi + 0x14]
mov ecx, dword [ebx]
inc edx
mov dword [edi + 0x14], edx
movzx eax, byte [esi + 0x32]
mov byte [edx + ecx], al
mov edx, dword [edi + 0x14]
mov ecx, dword [ebx]
inc edx
mov dword [edi + 0x14], edx
movzx eax, byte [esi + 0x33]
mov byte [edx + ecx], al
mov edx, dword [edi + 0x14]
mov ecx, dword [ebx]
inc edx
mov dword [edi + 0x14], edx
movzx eax, byte [esi + 8]
mov byte [edx + ecx], al
inc dword [edi + 0x14]
mov edx, dword [edi + 0x14]
mov ecx, dword [ebx]
movzx eax, byte [esi + 9]
mov byte [edx + ecx], al
inc dword [edi + 0x14]
mov edx, dword [edi + 0x14]
mov ecx, dword [ebx]
movzx eax, byte [esi + 0xa]
mov byte [edx + ecx], al
inc dword [edi + 0x14]
mov edx, dword [edi + 0x14]
mov ecx, dword [ebx]
movzx eax, byte [esi + 0xb]
mov byte [edx + ecx], al
jmp 0x102d2aa4
movzx ebx, word [esi + 0x32]
mov ecx, dword [edi + 0x14]
mov edx, ebx
mov eax, dword [edi + 8]
shr edx, 8
mov byte [ecx + eax], dl
mov ecx, dword [edi + 0x14]
mov eax, dword [edi + 8]
inc ecx
mov dword [edi + 0x14], ecx
mov byte [ecx + eax], bl
mov edx, dword [edi + 0x14]
mov eax, dword [edi + 8]
inc edx
mov dword [edi + 0x14], edx
movzx ebx, word [esi + 0x30]
mov ecx, ebx
shr ecx, 8
mov byte [edx + eax], cl
mov ecx, dword [edi + 0x14]
mov eax, dword [edi + 8]
inc ecx
mov dword [edi + 0x14], ecx
mov byte [ecx + eax], bl
inc dword [edi + 0x14]
mov ebx, dword [esi + 0x1c]
mov ecx, ebx
mov dword [ebp - 0x18], ebx
call fcn.102d73c0
mov eax, dword [ebx + 0x14]
mov ebx, dword [esi + 0x10]
cmp eax, ebx
cmovbe ebx, eax
test ebx, ebx
je 0x102d2aef
mov eax, dword [ebp - 0x18]
push ebx
push dword [eax + 0x10]
push dword [esi + 0xc]
call sub.VCRUNTIME140.dll_memcpy
mov ecx, dword [ebp - 0x18]
add esp, 0xc
add dword [esi + 0xc], ebx
add dword [ecx + 0x10], ebx
add dword [esi + 0x14], ebx
sub dword [esi + 0x10], ebx
sub dword [ecx + 0x14], ebx
jne 0x102d2aef
mov eax, dword [ecx + 8]
mov dword [ecx + 0x10], eax
mov eax, dword [edi + 0x18]
test eax, eax
jle 0x102d2afb
neg eax
mov dword [edi + 0x18], eax
xor eax, eax
cmp dword [edi + 0x14], eax
pop ebx
pop edi
sete al
pop esi
mov esp, ebp
pop ebp
ret
cmp dword [esi + 0x10], 0
jne 0x102d2b17
mov dword [edi + 0x28], 0xffffffff
pop ebx
pop edi
xor eax, eax
pop esi
mov esp, ebp
pop ebp
ret
pop edi
mov dword [esi + 0x18], str.stream_error
mov eax, 0xfffffffe
pop esi
mov esp, ebp
pop ebp
ret
mov eax, 0xfffffffe
pop esi
mov esp, ebp
pop ebp
ret