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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x54
mov esi, dword [esp + 0x68]
mov dword [esp + 0x2c], 0
mov eax, 0xfffffffe
test esi, esi
je 0x4c492c
cmp dword [esi + 0x20], 0
je 0x4c492c
cmp dword [esi + 0x24], 0
je 0x4c492c
mov edi, dword [esi + 0x1c]
test edi, edi
je 0x4c492c
cmp dword [edi], esi
jne 0x4c492c
mov ebp, dword [edi + 4]
lea ecx, [ebp - 0x3f34]
cmp ecx, 0x1f
ja 0x4c492c
mov ecx, dword [esi + 0xc]
mov dword [esp + 0x20], ecx
test ecx, ecx
je 0x4c492c
mov ecx, dword [esi]
test ecx, ecx
je 0x4c448e
cmp ebp, 0x3f3f
jne 0x4c25df
mov dword [edi + 4], 0x3f40
mov ecx, dword [esi]
mov eax, dword [esi + 0xc]
mov dword [esp + 0x20], eax
mov ebp, 0x3f40
mov dword [esp], ecx
mov edx, dword [esi + 4]
mov esi, dword [esi + 0x10]
mov eax, dword [edi + 0x3c]
mov dword [esp + 8], eax
mov eax, dword [edi + 0x40]
mov dword [esp + 0x10], eax
lea eax, [edi + 0x534]
mov dword [esp + 0x44], eax
lea eax, [edi + 0x70]
mov dword [esp + 0x40], eax
lea eax, [edi + 0x58]
mov dword [esp + 0x3c], eax
lea eax, [edi + 0x74]
mov dword [esp + 0x38], eax
lea eax, [edi + 0x2f4]
mov dword [esp + 0x34], eax
lea eax, [edi + 0x5c]
mov dword [esp + 0x4c], eax
mov ecx, dword [esp + 0x6c]
lea eax, [ecx - 5]
mov dword [esp + 0x50], eax
mov dword [esp + 0x1c], 0
mov dword [esp + 0x48], edx
mov dword [esp + 4], edx
mov dword [esp + 0x14], esi
mov dword [esp + 0x24], esi
mov dword [esp + 0xc], edi
add ebp, 0xffffc0cc
cmp ebp, 0x1e
ja case.default.0x4c2664
mov ebx, dword [esp + 0x10]
mov edx, dword [esp + 8]
jmp dword [ebp*4 + 0x58b4a0]
mov eax, dword [edi + 0xc]
test eax, eax
je 0x4c2f8d
cmp ebx, 0x10
mov ebp, dword [esp + 4]
jae 0x4c39b7
test ebp, ebp
je 0x4c4683
lea edx, [ebp - 1]
mov esi, dword [esp]
movzx edi, byte [esi]
mov ecx, ebx
shl edi, cl
inc esi
add dword [esp + 8], edi
lea ecx, [ebx + 8]
cmp ebx, 7
ja 0x4c39a8
test edx, edx
je 0x4c49b0
mov esi, dword [esp]
movzx edx, byte [esi + 1]
shl edx, cl
add ebp, 0xfffffffe
add esi, 2
mov dword [esp], esi
mov ecx, dword [esp + 8]
add ecx, edx
mov edx, ecx
mov ebx, dword [esp + 0x10]
add ebx, 0x10
mov edi, dword [esp + 0xc]
jmp 0x4c39b7
cmp ebx, 0x10
jae 0x4c2c06
mov eax, dword [esp + 4]
test eax, eax
mov ebp, dword [esp]
je 0x4c4683
mov dword [esp + 4], eax
dec eax
movzx esi, byte [ebp]
mov ecx, ebx
shl esi, cl
lea edx, [ebp + 1]
mov ecx, dword [esp + 8]
add ecx, esi
mov esi, ecx
lea ecx, [ebx + 8]
cmp ebx, 7
ja 0x4c3211
test eax, eax
mov edi, dword [esp + 0xc]
je 0x4c4674
movzx eax, byte [ebp + 1]
shl eax, cl
mov ecx, dword [esp + 4]
add ecx, 0xfffffffe
add ebp, 2
mov edx, esi
mov esi, ecx
add edx, eax
add ebx, 0x10
jmp 0x4c321d
cmp ebx, 0x1f
mov esi, dword [esp + 4]
mov ebp, dword [esp]
jbe 0x4c33c0
jmp 0x4c345b
cmp ebx, 0xf
mov esi, dword [esp + 4]
mov ebp, dword [esp]
jbe 0x4c3495
jmp 0x4c34e1
mov eax, dword [edi + 0x14]
test eax, 0x400
jne 0x4c2c12
mov ebx, edx
mov esi, dword [esp + 4]
jmp 0x4c3542
mov esi, dword [esp + 4]
mov ebp, dword [esp]
jmp 0x4c3629
mov esi, dword [esp + 4]
mov ebp, dword [esp]
jmp 0x4c36d8
mov esi, dword [esp + 4]
mov ebp, dword [esp]
jmp 0x4c3797
mov esi, dword [esp + 4]
mov ebp, dword [esp]
jmp 0x4c3850
cmp ebx, 0x20
jae 0x4c2c26
mov eax, dword [esp + 4]
test eax, eax
mov ecx, dword [esp]
je 0x4c4726
movzx edx, byte [ecx]
mov dword [esp], ecx
mov ecx, ebx
shl edx, cl
mov dword [esp + 4], eax
lea ebp, [eax - 1]
mov esi, dword [esp + 8]
add esi, edx
mov ecx, dword [esp]
lea edx, [ecx + 1]
cmp ebx, 0x17
ja 0x4c2fa0
lea ecx, [ebx + 8]
test ebp, ebp
je 0x4c4674
mov eax, dword [esp]
movzx edx, byte [eax + 1]
shl edx, cl
mov ecx, eax
mov eax, dword [esp + 4]
lea ebp, [eax - 2]
add esi, edx
lea edx, [ecx + 2]
cmp ebx, 0xf
ja 0x4c2fa0
lea ecx, [ebx + 0x10]
test ebp, ebp
je 0x4c4674
mov ebp, dword [esp]
movzx edx, byte [ebp + 2]
shl edx, cl
mov eax, dword [esp + 4]
add eax, 0xfffffffd
add esi, edx
mov edx, esi
lea ecx, [ebp + 3]
cmp ebx, 7
ja 0x4c43ca
add ebx, 0x18
test eax, eax
je 0x4c46e7
mov ebp, dword [esp + 4]
add ebp, 0xfffffffc
mov esi, dword [esp]
movzx eax, byte [esi + 3]
add esi, 4
mov ecx, ebx
shl eax, cl
mov ecx, esi
add edx, eax
jmp 0x4c2fa4
mov eax, dword [esp + 0x14]
mov ebp, dword [esp + 4]
mov ecx, dword [esp]
jmp 0x4c2fbf
mov esi, dword [esp + 4]
jmp 0x4c2ff1
mov esi, dword [esp + 4]
jmp 0x4c2ffc
mov ecx, ebx
and cl, 7
shr edx, cl
and ebx, 0xfffffff8
cmp ebx, 0x1f
ja 0x4c2c32
mov ebp, edx
mov eax, dword [esp + 4]
test eax, eax
je 0x4c472d
mov dword [esp + 4], eax
dec eax
mov edx, dword [esp]
movzx esi, byte [edx]
mov ecx, ebx
shl esi, cl
inc edx
add ebp, esi
lea ecx, [ebx + 8]
cmp ebx, 0x17
ja 0x4c3077
test eax, eax
je 0x4c4975
mov eax, dword [esp + 4]
add eax, 0xfffffffe
mov edx, dword [esp]
movzx esi, byte [edx + 1]
shl esi, cl
add edx, 2
add ebp, esi
lea ecx, [ebx + 0x10]
cmp ebx, 0xf
ja 0x4c3077
test eax, eax
je 0x4c4975
mov eax, dword [esp + 4]
add eax, 0xfffffffd
mov edx, dword [esp]
movzx esi, byte [edx + 2]
shl esi, cl
add edx, 3
add ebp, esi
mov esi, ebp
lea ecx, [ebx + 0x18]
test ebx, ebx
je 0x4c43d1
mov dword [esp], edx
mov ebx, ecx
mov edi, dword [esp + 0xc]
mov edx, esi
mov esi, eax
jmp 0x4c3084
mov esi, dword [esp + 4]
jmp 0x4c30b2
mov ecx, dword [esp + 4]
jmp 0x4c30bb
cmp ebx, 0xe
jae 0x4c2c3b
mov eax, dword [esp + 4]
test eax, eax
mov ebp, dword [esp]
je 0x4c4683
mov dword [esp + 4], eax
dec eax
movzx esi, byte [ebp]
mov ecx, ebx
shl esi, cl
lea edx, [ebp + 1]
mov ecx, dword [esp + 8]
add ecx, esi
mov esi, ecx
lea ecx, [ebx + 8]
cmp ebx, 5
ja 0x4c3283
test eax, eax
mov edi, dword [esp + 0xc]
je 0x4c4674
movzx eax, byte [ebp + 1]
shl eax, cl
add dword [esp + 4], 0xfffffffe
add ebp, 2
mov edx, esi
add edx, eax
add ebx, 0x10
jmp 0x4c3291
mov ecx, ebx
mov ebx, dword [esp]
mov eax, dword [edi + 0x60]
mov ebp, dword [edi + 0x6c]
mov dword [esp + 0x18], eax
cmp ebp, eax
jb 0x4c32f1
mov dword [esp + 0x10], ecx
cmp ebp, 0x12
ja 0x4c2a43
mov edx, 3
sub edx, ebp
mov eax, ebp
and edx, 3
je 0x4c29f4
movzx esi, word [eax + eax + 0x58b52c]
inc eax
mov edi, dword [esp + 0xc]
mov word [edi + esi*2 + 0x74], 0
mov edi, dword [esp + 0xc]
dec edx
jne 0x4c29d9
add ebp, 0xfffffff0
cmp ebp, 3
jb 0x4c2a40
movzx ecx, word [eax + eax + 0x58b52c]
mov word [edi + ecx*2 + 0x74], 0
movzx ecx, word [eax + eax + 0x58b52e]
mov word [edi + ecx*2 + 0x74], 0
movzx ecx, word [eax + eax + 0x58b530]
mov word [edi + ecx*2 + 0x74], 0
movzx ecx, word [eax + eax + 0x58b532]
add eax, 4
mov word [edi + ecx*2 + 0x74], 0
cmp eax, 0x13
jne 0x4c29fc
mov dword [edi + 0x6c], eax
mov eax, dword [esp + 0x44]
mov dword [edi + 0x70], eax
mov dword [edi + 0x50], eax
mov dword [edi + 0x58], 7
push dword [esp + 0x34]
push dword [esp + 0x40]
push dword [esp + 0x48]
push 0x13
push dword [esp + 0x48]
push 0
call fcn.00534040
add esp, 0x18
mov dword [esp + 0x1c], eax
test eax, eax
mov eax, ebx
je 0x4c2c43
mov dword [esp], eax
mov eax, dword [esp + 0x68]
mov dword [eax + 0x18], str.invalid_code_lengths_set
mov dword [edi + 4], 0x3f51
mov ebp, dword [edi + 4]
jmp 0x4c264d
mov ecx, dword [edi + 0x6c]
mov eax, dword [esp]
jmp 0x4c2c63
mov eax, dword [edi + 0x4c]
mov ecx, dword [esp + 4]
test eax, eax
je 0x4c3f14
mov esi, eax
mov eax, edx
mov ebp, esi
cmp ebx, esi
jae 0x4c31b2
mov dword [esp + 0x10], ebx
mov edx, ebx
mov dword [esp + 4], ecx
mov edi, ecx
mov ebx, dword [esp]
sub edi, 1
jb 0x4c456a
movzx esi, byte [ebx]
mov ecx, edx
shl esi, cl
inc ebx
add eax, esi
add edx, 8
mov ecx, ebp
cmp edx, ebp
jb 0x4c2ad2
jmp 0x4c31b9
mov ecx, dword [edi + 0x4c]
mov esi, dword [esp]
jmp 0x4c40db
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x14]
mov esi, dword [esp]
jmp 0x4c417f
mov ecx, dword [esp + 0x14]
test ecx, ecx
je 0x4c46d8
movzx eax, byte [edi + 0x44]
mov edx, dword [esp + 0x20]
mov byte [edx], al
inc edx
mov dword [esp + 0x20], edx
dec ecx
mov dword [esp + 0x14], ecx
mov dword [edi + 4], 0x3f48
mov ebp, dword [edi + 4]
jmp 0x4c264d
cmp dword [edi + 0xc], 0
je 0x4c2f99
cmp ebx, 0x1f
ja 0x4c31ec
mov ebx, dword [esp + 4]
test ebx, ebx
mov edi, dword [esp]
je 0x4c499d
lea eax, [ebx - 1]
movzx esi, byte [edi]
mov ecx, dword [esp + 0x10]
shl esi, cl
inc edi
add edx, esi
mov ebp, edx
lea edx, [ecx + 8]
cmp ecx, 0x17
ja 0x4c3a77
test eax, eax
je 0x4c49bc
lea eax, [ebx - 2]
mov edi, dword [esp]
movzx esi, byte [edi + 1]
mov ecx, edx
shl esi, cl
lea edx, [edi + 2]
add ebp, esi
mov esi, dword [esp + 0x10]
lea ecx, [esi + 0x10]
cmp esi, 0xf
ja 0x4c3a88
test eax, eax
je 0x4c4975
lea eax, [ebx - 3]
mov edx, dword [esp]
movzx esi, byte [edx + 2]
shl esi, cl
add edx, 3
add ebp, esi
mov esi, dword [esp + 0x10]
lea ecx, [esi + 0x18]
cmp esi, 7
ja 0x4c3a88
test eax, eax
je 0x4c4975
mov edx, dword [esp]
movzx eax, byte [edx + 3]
shl eax, cl
add ebx, 0xfffffffc
mov dword [esp + 4], ebx
add edx, 4
mov dword [esp], edx
add ebp, eax
mov dword [esp + 8], ebp
add dword [esp + 0x10], 0x20
jmp 0x4c3a97
mov eax, dword [edi + 0xc]
jmp 0x4c3b37
mov esi, dword [esp + 4]
mov ebp, dword [esp]
jmp 0x4c321d
mov edi, edx
cmp ebx, 0xf
mov esi, dword [esp + 4]
ja 0x4c35b1
jmp 0x4c355c
mov ebp, dword [esp + 4]
mov ecx, dword [esp]
jmp 0x4c2fa4
mov esi, dword [esp + 4]
jmp 0x4c3084
mov ebp, dword [esp]
jmp 0x4c3291
mov dword [edi + 0x6c], 0
mov dword [edi + 4], 0x3f46
xor ecx, ecx
mov dword [esp + 0x1c], 0
mov ebx, dword [esp + 0x10]
mov edx, dword [esp + 8]
mov dword [esp], eax
mov eax, dword [edi + 0x64]
mov esi, dword [edi + 0x68]
add esi, eax
cmp ecx, esi
jae 0x4c2f1a
mov ebp, dword [esp + 4]
mov dword [esp + 0x28], esi
mov dword [esp + 0x18], ecx
mov eax, dword [edi + 0x50]
movzx ecx, byte [edi + 0x58]
mov esi, 0xffffffff
shl esi, cl
not esi
mov edi, edx
mov ecx, edx
and ecx, esi
mov dword [esp + 8], eax
movzx edx, byte [eax + ecx*4 + 1]
cmp ebx, edx
jae 0x4c2cdd
mov dword [esp + 0x10], ebx
mov eax, ebx
mov dword [esp + 4], ebp
mov ebx, dword [esp]
sub ebp, 1
jb 0x4c44ca
movzx edx, byte [ebx]
mov ecx, eax
shl edx, cl
inc ebx
mov ecx, edi
add ecx, edx
add eax, 8
mov edi, ecx
and ecx, esi
mov edx, dword [esp + 8]
movzx edx, byte [edx + ecx*4 + 1]
cmp eax, edx
jb 0x4c2cb2
jmp 0x4c2ce2
mov eax, ebx
mov ebx, dword [esp]
mov esi, dword [esp + 8]
movzx ecx, word [esi + ecx*4 + 2]
cmp ecx, 0xf
ja 0x4c2d33
mov esi, dword [esp + 0x18]
inc esi
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0xc]
mov dword [ecx + 0x6c], esi
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x10], edx
mov edx, dword [esp + 4]
mov word [ecx + esi*2 + 0x74], dx
mov ecx, dword [esp + 0x10]
shr edi, cl
mov dword [esp + 8], edi
mov edi, dword [esp + 0xc]
sub eax, ecx
mov dword [esp], ebx
mov dword [esp + 4], ebp
mov ebx, eax
jmp 0x4c2ee9
cmp ecx, 0x10
je 0x4c2d85
cmp ecx, 0x11
jne 0x4c2de1
lea ecx, [edx + 3]
mov dword [esp + 4], ecx
cmp eax, ecx
jae 0x4c2d68
sub ebp, 1
jb 0x4c4546
movzx esi, byte [ebx]
mov ecx, eax
shl esi, cl
inc ebx
add edi, esi
add eax, 8
cmp eax, dword [esp + 4]
jb 0x4c2d4c
mov ecx, edx
shr edi, cl
mov esi, edi
and esi, 7
add esi, 3
shr edi, 3
mov dword [esp + 8], edi
sub eax, edx
add eax, 0xfffffffd
jmp 0x4c2e20
lea ecx, [edx + 2]
mov dword [esp + 4], ecx
cmp eax, ecx
jae 0x4c2dac
sub ebp, 1
jb 0x4c4546
movzx esi, byte [ebx]
mov ecx, eax
shl esi, cl
inc ebx
add edi, esi
add eax, 8
cmp eax, dword [esp + 4]
jb 0x4c2d90
mov ecx, edx
shr edi, cl
sub eax, edx
mov ecx, dword [esp + 0x18]
test ecx, ecx
je 0x4c445f
mov edx, dword [esp + 0xc]
movzx ecx, word [edx + ecx*2 + 0x72]
mov esi, edi
and esi, 3
add esi, 3
shr edi, 2
mov dword [esp + 8], edi
mov edi, edx
add eax, 0xfffffffe
mov dword [esp + 0x10], eax
jmp 0x4c2e2a
lea ecx, [edx + 7]
mov dword [esp + 4], ecx
cmp eax, ecx
jae 0x4c2e08
sub ebp, 1
jb 0x4c4546
movzx esi, byte [ebx]
mov ecx, eax
shl esi, cl
inc ebx
add edi, esi
add eax, 8
cmp eax, dword [esp + 4]
jb 0x4c2dec
mov ecx, edx
shr edi, cl
mov esi, edi
and esi, 0x7f
add esi, 0xb
shr edi, 7
mov dword [esp + 8], edi
sub eax, edx
add eax, 0xfffffff9
xor ecx, ecx
mov dword [esp + 0x10], eax
mov edi, dword [esp + 0xc]
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x18]
add eax, esi
cmp eax, edx
ja 0x4c4417
mov edx, esi
mov eax, esi
and edx, 3
je 0x4c2e70
mov dword [esp], esi
mov dword [esp + 4], edx
mov edx, edi
xor esi, esi
mov eax, dword [edx + 0x6c]
lea edi, [eax + 1]
mov dword [edx + 0x6c], edi
mov word [edx + eax*2 + 0x74], cx
inc esi
cmp dword [esp + 4], esi
jne 0x4c2e50
mov edi, dword [esp]
mov eax, edi
sub eax, esi
mov esi, edi
mov edi, edx
cmp esi, 4
jb 0x4c2ede
mov edx, dword [edi + 0x6c]
lea esi, [edx + 1]
mov edi, dword [esp + 0xc]
mov dword [edi + 0x6c], esi
mov esi, dword [esp + 0xc]
mov word [esi + edx*2 + 0x74], cx
mov edx, dword [esp + 0xc]
mov edx, dword [edx + 0x6c]
lea esi, [edx + 1]
mov edi, dword [esp + 0xc]
mov dword [edi + 0x6c], esi
mov esi, dword [esp + 0xc]
mov word [esi + edx*2 + 0x74], cx
mov edx, dword [esp + 0xc]
mov edx, dword [edx + 0x6c]
lea esi, [edx + 1]
mov edi, dword [esp + 0xc]
mov dword [edi + 0x6c], esi
mov esi, dword [esp + 0xc]
mov word [esi + edx*2 + 0x74], cx
mov edx, dword [esp + 0xc]
mov edx, dword [edx + 0x6c]
lea esi, [edx + 1]
mov edi, dword [esp + 0xc]
mov dword [edi + 0x6c], esi
mov edi, dword [esp + 0xc]
mov word [edi + edx*2 + 0x74], cx
add eax, 0xfffffffc
jne 0x4c2e75
mov dword [esp], ebx
mov dword [esp + 4], ebp
mov ebx, dword [esp + 0x10]
mov eax, dword [edi + 0x64]
mov ecx, dword [edi + 0x6c]
mov esi, dword [edi + 0x68]
add esi, eax
cmp ecx, esi
mov edx, dword [esp + 8]
mov ebp, dword [esp + 4]
jb 0x4c2c7a
mov dword [esp + 8], edx
mov dword [esp + 0x10], ebx
cmp dword [edi + 4], 0x3f51
jne 0x4c2f26
jmp 0x4c3dd6
mov dword [esp + 8], edx
mov dword [esp + 0x10], ebx
mov ebp, dword [esp + 4]
cmp word [edi + 0x274], 0
mov dword [esp + 4], ebp
je 0x4c31f7
mov ecx, dword [esp + 0x44]
mov dword [edi + 0x70], ecx
mov dword [edi + 0x50], ecx
mov dword [edi + 0x58], 0xa
mov ebp, dword [esp + 0x34]
push ebp
push dword [esp + 0x40]
mov esi, dword [esp + 0x48]
push esi
push eax
mov ebx, dword [esp + 0x48]
push ebx
push 1
call fcn.00534040
add esp, 0x18
mov dword [esp + 0x1c], eax
test eax, eax
je 0x4c395b
mov eax, dword [esp + 0x68]
mov dword [eax + 0x18], str.invalid_literal_lengths_set
mov dword [edi + 4], 0x3f51
mov ebp, dword [edi + 4]
jmp 0x4c264d
mov dword [edi + 4], 0x3f40
jmp 0x4c3dd6
xor eax, eax
jmp 0x4c3b30
mov ecx, edx
mov edx, esi
bswap edx
mov dword [edi + 0x1c], edx
mov eax, dword [esp + 0x68]
mov dword [eax + 0x30], edx
mov dword [edi + 4], 0x3f3e
xor edx, edx
xor ebx, ebx
mov eax, dword [esp + 0x14]
mov esi, edx
cmp dword [edi + 0x10], 0
mov dword [esp], ecx
je 0x4c4604
push 0
push 0
push 0
call fcn.00534bb0
add esp, 0xc
mov dword [edi + 0x1c], eax
mov ecx, dword [esp + 0x68]
mov dword [ecx + 0x30], eax
mov dword [edi + 4], 0x3f3f
mov edx, esi
mov esi, ebp
cmp dword [esp + 0x50], 2
jb 0x4c4736
cmp dword [edi + 8], 0
je 0x4c3027
mov dword [esp + 4], esi
mov ecx, ebx
and cl, 7
shr edx, cl
mov dword [esp + 8], edx
and ebx, 0xfffffff8
mov dword [esp + 0x10], ebx
mov dword [edi + 4], 0x3f4e
mov ebp, dword [edi + 4]
jmp 0x4c264d
cmp ebx, 3
jae 0x4c304b
test esi, esi
mov ebp, esi
mov esi, dword [esp]
je 0x4c46ea
movzx eax, byte [esi]
mov ecx, ebx
shl eax, cl
dec ebp
mov ecx, ebp
inc esi
add edx, eax
add ebx, 8
jmp 0x4c3050
mov ecx, esi
mov esi, dword [esp]
mov eax, edx
and eax, 1
mov dword [edi + 8], eax
mov eax, edx
shr eax, 1
and eax, 3
mov dword [esp + 4], ecx
mov dword [esp], esi
jmp dword [eax*4 + 0x58b51c]
mov eax, 0x3f41
jmp 0x4c3199
mov dword [esp], edx
mov esi, eax
mov ebx, ecx
mov edi, dword [esp + 0xc]
mov edx, ebp
movzx eax, dx
mov ecx, edx
not ecx
shr ecx, 0x10
cmp eax, ecx
jne 0x4c312d
xor edx, edx
mov dword [edi + 0x44], eax
mov dword [edi + 4], 0x3f42
mov ebx, 0
cmp dword [esp + 0x6c], 6
je 0x4c4734
mov ecx, esi
mov dword [edi + 4], 0x3f43
mov dword [esp + 0x10], ebx
mov esi, dword [edi + 0x44]
test esi, esi
mov dword [esp + 8], edx
je 0x4c311a
mov eax, ecx
cmp esi, ecx
cmovae esi, ecx
mov edi, dword [esp + 0x14]
cmp esi, edi
cmovae esi, edi
test esi, esi
je 0x4c464c
push esi
push dword [esp + 4]
mov ebx, dword [esp + 0x28]
push ebx
mov ebp, eax
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
add esp, 0xc
sub ebp, esi
mov dword [esp + 4], ebp
add dword [esp], esi
sub edi, esi
mov dword [esp + 0x14], edi
add ebx, esi
mov dword [esp + 0x20], ebx
mov edi, dword [esp + 0xc]
sub dword [edi + 0x44], esi
mov ebp, dword [edi + 4]
jmp 0x4c264d
mov dword [esp + 4], ecx
mov dword [edi + 4], 0x3f3f
mov ebp, dword [edi + 4]
jmp 0x4c264d
mov dword [esp + 8], edx
mov dword [esp + 0x10], ebx
mov dword [esp + 4], esi
mov eax, dword [esp + 0x68]
mov dword [eax + 0x18], str.invalid_stored_block_lengths
mov dword [edi + 4], 0x3f51
mov ebp, dword [edi + 4]
jmp 0x4c264d
mov dword [edi + 0x50], 0x58b720
mov dword [edi + 0x58], 9
mov dword [edi + 0x54], 0x58bf20
mov dword [edi + 0x5c], 5
mov dword [edi + 4], 0x3f47
cmp dword [esp + 0x6c], 6
jne 0x4c319c
jmp 0x4c497e
mov eax, 0x3f44
jmp 0x4c3199
mov eax, dword [esp + 0x68]
mov dword [eax + 0x18], str.invalid_block_type
mov eax, 0x3f51
mov dword [edi + 4], eax
shr edx, 3
mov dword [esp + 8], edx
add ebx, 0xfffffffd
mov dword [esp + 0x10], ebx
mov ebp, dword [edi + 4]
jmp 0x4c264d
mov edx, ebx
mov ebx, dword [esp]
mov edi, ecx
mov esi, 0xffffffff
mov ecx, ebp
shl esi, cl
not esi
mov ebp, eax
and esi, eax
mov eax, dword [esp + 0xc]
add esi, dword [eax + 0x44]
shr ebp, cl
mov dword [eax + 0x44], esi
add dword [eax + 0x2348], ecx
sub edx, ecx
mov dword [esp], ebx
mov dword [esp + 4], edi
mov ebx, edx
mov edx, ebp
jmp 0x4c3f1d
mov esi, edi
mov dword [esp + 8], edx
jmp 0x4c3a9b
mov eax, dword [esp + 0x68]
mov dword [eax + 0x18], str.invalid_code____missing_end_of_block
mov dword [edi + 4], 0x3f51
mov ebp, dword [edi + 4]
jmp 0x4c264d
mov ebp, edx
mov ebx, ecx
mov edi, dword [esp + 0xc]
mov edx, esi
mov esi, eax
mov dword [edi + 0x14], edx
cmp dl, 8
jne 0x4c325a
test edx, 0xe000
je 0x4c3377
mov dword [esp], ebp
mov dword [esp + 8], edx
mov dword [esp + 0x10], ebx
mov dword [esp + 4], esi
mov eax, dword [esp + 0x68]
mov dword [eax + 0x18], str.unknown_header_flags_set
mov dword [edi + 4], 0x3f51
mov ebp, dword [edi + 4]
jmp 0x4c264d
mov dword [esp], ebp
mov dword [esp + 8], edx
mov dword [esp + 0x10], ebx
mov dword [esp + 4], esi
mov eax, dword [esp + 0x68]
mov dword [eax + 0x18], str.unknown_compression_method
mov dword [edi + 4], 0x3f51
mov ebp, dword [edi + 4]
jmp 0x4c264d
mov ebp, edx
mov dword [esp + 4], eax
mov ebx, ecx
mov edi, dword [esp + 0xc]
mov edx, esi
mov esi, edx
and edx, 0x1f
lea eax, [edx + 0x101]
mov dword [edi + 0x64], eax
mov ecx, esi
shr ecx, 5
and ecx, 0x1f
lea eax, [ecx + 1]
mov dword [edi + 0x68], eax
mov eax, esi
shr eax, 0xa
and eax, 0xf
add eax, 4
mov dword [esp + 0x18], eax
mov dword [edi + 0x60], eax
shr esi, 0xe
mov dword [esp + 8], esi
add ebx, 0xfffffff2
mov dword [esp + 0x10], ebx
cmp edx, 0x1d
ja 0x4c335a
cmp ecx, 0x1e
jae 0x4c335a
mov ebx, ebp
mov dword [edi + 0x6c], 0
mov dword [edi + 4], 0x3f45
xor ebp, ebp
mov ecx, dword [esp + 0x10]
mov edx, ebp
jmp 0x4c332d
mov ecx, edi
mov eax, dword [esp + 8]
mov esi, eax
and esi, 7
lea ebp, [edx + 1]
mov edi, dword [esp + 0xc]
mov dword [edi + 0x6c], ebp
movzx edx, word [edx + edx + 0x58b52c]
mov word [edi + edx*2 + 0x74], si
shr eax, 3
mov dword [esp + 8], eax
add ecx, 0xfffffffd
mov edx, ebp
cmp ebp, dword [esp + 0x18]
jae 0x4c29c2
mov esi, edi
mov edi, ecx
cmp ecx, 2
ja 0x4c32f5
mov eax, dword [esp + 4]
test eax, eax
je 0x4c44f7
movzx esi, byte [ebx]
mov ecx, edi
shl esi, cl
dec eax
mov dword [esp + 4], eax
inc ebx
mov eax, dword [esp + 8]
add eax, esi
add ecx, 8
jmp 0x4c32fb
mov dword [esp], ebp
mov eax, dword [esp + 0x68]
mov dword [eax + 0x18], str.too_many_length_or_distance_symbols
mov dword [edi + 4], 0x3f51
mov ebp, dword [edi + 4]
jmp 0x4c264d
mov eax, dword [edi + 0x24]
mov ecx, edx
test eax, eax
je 0x4c338d
mov ecx, edx
shr ecx, 8
and ecx, 1
mov dword [eax], ecx
mov ecx, dword [edi + 0x14]
test ecx, 0x200
je 0x4c33b5
test byte [edi + 0xc], 4
je 0x4c33b5
mov word [esp + 0x2c], dx
lea eax, [esp + 0x2c]
push 2
push eax
push dword [edi + 0x1c]
call fcn.004c56f0
add esp, 0xc
mov dword [edi + 0x1c], eax
mov dword [edi + 4], 0x3f36
xor ebx, ebx
xor edx, edx
test esi, esi
je 0x4c45fc
mov eax, esi
mov esi, edx
movzx edx, byte [ebp]
mov ecx, ebx
shl edx, cl
mov dword [esp + 4], eax
dec eax
add esi, edx
lea edx, [ebp + 1]
cmp ebx, 0x17
ja 0x4c3455
lea ecx, [ebx + 8]
test eax, eax
je 0x4c4674
movzx edx, byte [ebp + 1]
shl edx, cl
mov eax, dword [esp + 4]
add eax, 0xfffffffe
add esi, edx
lea edx, [ebp + 2]
cmp ebx, 0xf
ja 0x4c3455
lea ecx, [ebx + 0x10]
test eax, eax
je 0x4c4674
movzx edx, byte [ebp + 2]
shl edx, cl
mov eax, dword [esp + 4]
add eax, 0xfffffffd
add esi, edx
mov edx, esi
lea ecx, [ebp + 3]
cmp ebx, 7
ja 0x4c3c8c
add ebx, 0x18
test eax, eax
je 0x4c46e7
mov esi, dword [esp + 4]
add esi, 0xfffffffc
movzx eax, byte [ebp + 3]
add ebp, 4
mov ecx, ebx
shl eax, cl
add edx, eax
mov eax, dword [edi + 0x24]
test eax, eax
jne 0x4c3462
jmp 0x4c3465
mov ebp, edx
mov edx, esi
mov esi, eax
mov eax, dword [edi + 0x24]
test eax, eax
je 0x4c3465
mov dword [eax + 4], edx
test byte [edi + 0x15], 2
je 0x4c348a
test byte [edi + 0xc], 4
je 0x4c348a
mov dword [esp + 0x2c], edx
lea eax, [esp + 0x2c]
push 4
push eax
push dword [edi + 0x1c]
call fcn.004c56f0
add esp, 0xc
mov dword [edi + 0x1c], eax
mov dword [edi + 4], 0x3f37
xor ebx, ebx
xor edx, edx
test esi, esi
je 0x4c45fc
mov eax, esi
mov esi, edx
movzx edx, byte [ebp]
mov ecx, ebx
shl edx, cl
mov ecx, ebp
mov dword [esp + 4], eax
dec eax
add esi, edx
mov edx, esi
lea ecx, [ebp + 1]
cmp ebx, 7
ja 0x4c34dd
add ebx, 8
test eax, eax
je 0x4c46e7
mov esi, dword [esp + 4]
add esi, 0xfffffffe
movzx eax, byte [ebp + 1]
add ebp, 2
mov ecx, ebx
shl eax, cl
add edx, eax
jmp 0x4c34e1
mov ebp, ecx
mov esi, eax
mov eax, dword [edi + 0x24]
test eax, eax
je 0x4c34f9
movzx ecx, dl
mov dword [eax + 8], ecx
mov eax, edx
shr eax, 8
mov ecx, dword [edi + 0x24]
mov dword [ecx + 0xc], eax
mov dword [esp], ebp
test byte [edi + 0x15], 2
je 0x4c3522
test byte [edi + 0xc], 4
je 0x4c3522
mov word [esp + 0x2c], dx
lea eax, [esp + 0x2c]
push 2
push eax
push dword [edi + 0x1c]
call fcn.004c56f0
add esp, 0xc
mov dword [edi + 0x1c], eax
mov dword [edi + 4], 0x3f38
mov eax, dword [edi + 0x14]
xor edi, edi
mov dword [esp + 0x10], 0
mov ebx, 0
test eax, 0x400
jne 0x4c355c
mov edi, dword [esp + 0xc]
mov eax, dword [edi + 0x24]
test eax, eax
je 0x4c3554
mov dword [eax + 0x10], 0
mov ebp, dword [esp]
jmp 0x4c3620
test esi, esi
je 0x4c4693
mov ebp, dword [esp]
movzx edx, byte [ebp]
mov ecx, dword [esp + 0x10]
shl edx, cl
mov dword [esp + 4], esi
dec esi
add edi, edx
lea edx, [ebp + 1]
cmp ecx, 7
ja 0x4c35ae
mov ebx, ecx
mov dword [esp + 8], edi
add ebx, 8
test esi, esi
je 0x4c4713
mov esi, dword [esp + 4]
add esi, 0xfffffffe
movzx edx, byte [ebp + 1]
add ebp, 2
mov dword [esp], ebp
mov ecx, ebx
shl edx, cl
mov edi, dword [esp + 8]
add edi, edx
jmp 0x4c35b1
mov dword [esp], edx
mov dword [esp + 4], esi
mov esi, dword [esp + 0xc]
mov dword [esi + 0x44], edi
mov ecx, dword [esi + 0x24]
test ecx, ecx
je 0x4c35cb
mov edx, edi
mov dword [ecx + 0x14], edi
mov eax, dword [esi + 0x14]
xor ebx, ebx
test eax, 0x200
jne 0x4c35e9
mov dword [esp + 0x10], 0
mov ebp, dword [esp]
mov edi, dword [esp + 0xc]
mov esi, dword [esp + 4]
jmp 0x4c3620
mov ebp, dword [esp + 0xc]
test byte [ebp + 0xc], 4
mov esi, dword [esp + 4]
je 0x4c3611
mov word [esp + 0x2c], di
lea eax, [esp + 0x2c]
push 2
push eax
push dword [ebp + 0x1c]
call fcn.004c56f0
add esp, 0xc
mov dword [ebp + 0x1c], eax
mov dword [esp + 0x10], 0
mov eax, dword [esp]
mov edi, ebp
mov ebp, eax
mov dword [edi + 4], 0x3f39
mov edx, ebx
mov eax, dword [edi + 0x14]
test eax, 0x400
jne 0x4c363c
mov ebx, dword [esp + 0x10]
jmp 0x4c36ca
mov dword [esp + 8], edx
mov ecx, dword [edi + 0x44]
cmp ecx, esi
mov ebx, esi
cmovb ebx, ecx
test ebx, ebx
je 0x4c36ba
mov dword [esp + 4], esi
mov edi, dword [edi + 0x24]
test edi, edi
je 0x4c3689
mov edx, dword [edi + 0x10]
test edx, edx
je 0x4c3689
mov esi, dword [edi + 0x14]
mov edi, dword [edi + 0x18]
sub esi, ecx
mov ecx, edi
sub ecx, esi
jbe 0x4c3689
add edx, esi
add esi, ebx
cmp esi, edi
cmovbe ecx, ebx
push ecx
push ebp
push edx
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
add esp, 0xc
mov eax, dword [esp + 0xc]
mov eax, dword [eax + 0x14]
test eax, 0x200
mov edi, dword [esp + 0xc]
je 0x4c36aa
test byte [edi + 0xc], 4
je 0x4c36aa
push ebx
push ebp
push dword [edi + 0x1c]
call fcn.004c56f0
add esp, 0xc
mov dword [edi + 0x1c], eax
mov esi, dword [esp + 4]
sub esi, ebx
add ebp, ebx
mov ecx, dword [edi + 0x44]
sub ecx, ebx
mov dword [edi + 0x44], ecx
test ecx, ecx
mov edx, dword [esp + 8]
mov ebx, dword [esp + 0x10]
jne 0x4c4597
mov dword [edi + 0x44], 0
mov dword [edi + 4], 0x3f3a
test byte [edi + 0x15], 8
jne 0x4c36f5
mov eax, dword [edi + 0x24]
test eax, eax
je 0x4c3789
mov dword [eax + 0x1c], 0
jmp 0x4c3789
test esi, esi
je 0x4c4595
mov eax, esi
mov esi, edi
mov dword [esp + 0x10], ebx
mov dword [esp + 4], eax
mov dword [esp + 8], edx
xor edi, edi
nop
movzx ebx, byte [ebp + edi]
mov ecx, dword [esi + 0x24]
test ecx, ecx
je 0x4c3740
mov eax, dword [ecx + 0x1c]
test eax, eax
je 0x4c3740
mov edx, dword [esi + 0x44]
cmp edx, dword [ecx + 0x20]
jae 0x4c3740
lea ecx, [edx + 1]
mov dword [esi + 0x44], ecx
mov byte [eax + edx], bl
nop word cs:[eax + eax]
inc edi
test bl, bl
je 0x4c374b
cmp edi, dword [esp + 4]
jb 0x4c3710
test byte [esi + 0x15], 2
je 0x4c376d
mov eax, esi
test byte [esi + 0xc], 4
je 0x4c376d
push edi
push ebp
push dword [eax + 0x1c]
call fcn.004c56f0
add esp, 0xc
mov ecx, dword [esp + 0xc]
mov dword [ecx + 0x1c], eax
test bl, bl
jne 0x4c45af
mov eax, dword [esp + 4]
sub eax, edi
add ebp, edi
mov edx, dword [esp + 8]
mov ebx, dword [esp + 0x10]
mov edi, esi
mov esi, eax
mov dword [edi + 0x44], 0
mov dword [edi + 4], 0x3f3b
test byte [edi + 0x15], 0x10
jne 0x4c37b4
mov eax, dword [edi + 0x24]
test eax, eax
je 0x4c3849
mov dword [eax + 0x24], 0
jmp 0x4c3849
test esi, esi
je 0x4c4595
mov eax, esi
mov esi, edi
mov dword [esp + 0x10], ebx
mov dword [esp + 4], eax
mov dword [esp + 8], edx
xor edi, edi
nop
movzx ebx, byte [ebp + edi]
mov ecx, dword [esi + 0x24]
test ecx, ecx
je 0x4c3800
mov eax, dword [ecx + 0x24]
test eax, eax
je 0x4c3800
mov edx, dword [esi + 0x44]
cmp edx, dword [ecx + 0x28]
jae 0x4c3800
lea ecx, [edx + 1]
mov dword [esi + 0x44], ecx
mov byte [eax + edx], bl
nop word cs:[eax + eax]
inc edi
test bl, bl
je 0x4c380b
cmp edi, dword [esp + 4]
jb 0x4c37d0
test byte [esi + 0x15], 2
je 0x4c382d
mov eax, esi
test byte [esi + 0xc], 4
je 0x4c382d
push edi
push ebp
push dword [eax + 0x1c]
call fcn.004c56f0
add esp, 0xc
mov ecx, dword [esp + 0xc]
mov dword [ecx + 0x1c], eax
test bl, bl
jne 0x4c45af
mov eax, dword [esp + 4]
sub eax, edi
add ebp, edi
mov edx, dword [esp + 8]
mov ebx, dword [esp + 0x10]
mov edi, esi
mov esi, eax
mov dword [edi + 4], 0x3f3c
mov eax, dword [edi + 0x14]
test eax, 0x200
jne 0x4c3862
mov dword [esp], ebp
jmp 0x4c38e8
cmp ebx, 0xf
ja 0x4c38d3
mov dword [esp], ebp
test esi, esi
je 0x4c46ea
mov dword [esp + 4], esi
lea ebp, [esi - 1]
mov esi, dword [esp]
movzx edi, byte [esi]
mov ecx, ebx
shl edi, cl
mov ecx, esi
inc esi
add edx, edi
mov dword [esp + 8], edx
lea edx, [ebx + 8]
cmp ebx, 7
ja 0x4c38c3
test ebp, ebp
je 0x4c466b
mov edi, ebx
mov ebp, ecx
mov ecx, edx
movzx edx, byte [ebp + 1]
shl edx, cl
mov esi, dword [esp + 4]
add esi, 0xfffffffe
add ebp, 2
mov ecx, dword [esp + 8]
add ecx, edx
mov edx, ecx
add ebx, 0x10
mov edi, dword [esp + 0xc]
jmp 0x4c38d3
mov ecx, ebp
mov ebp, esi
mov esi, ecx
mov ebx, edx
mov edi, dword [esp + 0xc]
mov edx, dword [esp + 8]
test byte [edi + 0xc], 4
mov dword [esp], ebp
je 0x4c38e4
movzx ecx, word [edi + 0x1c]
cmp edx, ecx
jne 0x4c3935
xor edx, edx
xor ebx, ebx
mov dword [esp + 8], edx
mov dword [esp + 0x10], ebx
mov dword [esp + 4], esi
mov ecx, dword [edi + 0x24]
test ecx, ecx
je 0x4c390e
shr eax, 9
and eax, 1
mov dword [ecx + 0x2c], eax
mov eax, dword [edi + 0x24]
mov dword [eax + 0x30], 1
push 0
push 0
push 0
call fcn.004c56f0
add esp, 0xc
mov dword [edi + 0x1c], eax
mov ecx, dword [esp + 0x68]
mov dword [ecx + 0x30], eax
mov dword [edi + 4], 0x3f3f
mov ebp, dword [edi + 4]
jmp 0x4c264d
mov dword [esp + 8], edx
mov dword [esp + 0x10], ebx
mov dword [esp + 4], esi
mov eax, dword [esp + 0x68]
mov dword [eax + 0x18], str.header_crc_mismatch
mov dword [edi + 4], 0x3f51
mov ebp, dword [edi + 4]
jmp 0x4c264d
mov eax, dword [edi + 0x70]
mov dword [edi + 0x54], eax
mov dword [edi + 0x5c], 9
mov eax, dword [edi + 0x64]
lea eax, [ebx + eax*2]
push ebp
push dword [esp + 0x50]
push esi
push dword [edi + 0x68]
push eax
push 2
call fcn.00534040
add esp, 0x18
mov dword [esp + 0x1c], eax
test eax, eax
je 0x4c3ca0
mov eax, dword [esp + 0x68]
mov dword [eax + 0x18], str.invalid_distances_set
mov dword [edi + 4], 0x3f51
mov ebp, dword [edi + 4]
jmp 0x4c264d
mov dword [esp], esi
mov ebp, edx
mov ebx, ecx
mov edi, dword [esp + 0xc]
mov edx, dword [esp + 8]
test al, 2
mov dword [esp + 4], ebp
je 0x4c3a1e
cmp edx, 0x8b1f
jne 0x4c3a1e
cmp dword [edi + 0x28], 0
jne 0x4c39d4
mov dword [edi + 0x28], 0xf
push 0
push 0
push 0
call fcn.004c56f0
add esp, 0xc
mov dword [edi + 0x1c], eax
mov word [esp + 0x2c], 0x8b1f
lea ecx, [esp + 0x2c]
push 2
push ecx
push eax
call fcn.004c56f0
add esp, 0xc
mov dword [edi + 0x1c], eax
mov dword [edi + 4], 0x3f35
mov dword [esp + 8], 0
mov dword [esp + 0x10], 0
mov ebp, dword [edi + 4]
jmp 0x4c264d
mov dword [esp + 8], edx
mov dword [esp + 0x10], ebx
mov ecx, dword [edi + 0x24]
test ecx, ecx
je 0x4c3a37
mov dword [ecx + 0x30], 0xffffffff
mov eax, dword [edi + 0xc]
test al, 1
mov edx, dword [esp + 0x68]
je 0x4c3a61
mov ecx, dword [esp + 8]
mov eax, ecx
shl eax, 8
movzx eax, ax
shr ecx, 8
add ecx, eax
imul eax, ecx, 0xbdef7bdf
cmp eax, 0x8421085
jb 0x4c433d
mov dword [edx + 0x18], str.incorrect_header_check
mov dword [edi + 4], 0x3f51
mov ebp, dword [edi + 4]
jmp 0x4c264d
mov dword [esp + 8], ebp
mov dword [esp], edi
mov dword [esp + 4], eax
mov dword [esp + 0x10], edx
jmp 0x4c3a97
mov dword [esp + 8], ebp
mov dword [esp], edx
mov dword [esp + 4], eax
mov dword [esp + 0x10], ecx
mov esi, dword [esp + 0xc]
mov eax, dword [esp + 0x14]
mov ebx, dword [esp + 0x24]
mov ecx, ebx
sub ecx, eax
mov edx, dword [esp + 0x68]
add dword [edx + 0x14], ecx
add dword [esi + 0x20], ecx
mov edi, esi
mov edx, dword [esi + 0xc]
mov ebp, edx
and edx, 4
je 0x4c3ae1
cmp ebx, eax
mov ebx, dword [esp]
mov esi, dword [esp + 0x68]
je 0x4c3b03
mov edx, dword [esp + 0x20]
sub edx, ecx
cmp dword [edi + 0x14], 0
mov eax, dword [edi + 0x1c]
je 0x4c3aea
push ecx
push edx
push eax
call fcn.004c56f0
jmp 0x4c3af2
mov ebx, dword [esp]
mov esi, dword [esp + 0x68]
jmp 0x4c3b03
push ecx
push edx
push eax
call fcn.00534bb0
add esp, 0xc
mov dword [edi + 0x1c], eax
mov dword [esi + 0x30], eax
mov edx, dword [edi + 0xc]
mov ebp, edx
and edx, 4
test edx, edx
mov dword [esp], ebx
je 0x4c3b22
cmp dword [edi + 0x14], 0
mov eax, dword [esp + 8]
mov ecx, eax
bswap ecx
cmovne ecx, eax
cmp ecx, dword [edi + 0x1c]
jne 0x4c3c60
xor edx, edx
xor ebx, ebx
mov eax, dword [esp + 0x14]
mov dword [esp + 0x24], eax
mov eax, ebp
mov dword [edi + 4], 0x3f4f
test eax, eax
je 0x4c462a
cmp dword [edi + 0x14], 0
mov esi, dword [esp + 4]
je 0x4c4638
mov dword [esp + 0x18], 1
cmp ebx, 0x1f
ja 0x4c3c0d
mov dword [esp + 8], eax
test esi, esi
mov eax, esi
mov esi, dword [esp]
je 0x4c46ea
mov dword [esp + 4], eax
lea edi, [eax - 1]
mov eax, edx
mov edx, ebx
movzx ebx, byte [esi]
mov ecx, edx
shl ebx, cl
inc esi
add eax, ebx
mov ebx, edx
lea ecx, [edx + 8]
cmp edx, 0x17
ja 0x4c3c12
test edi, edi
je 0x4c4700
mov esi, dword [esp + 4]
lea edi, [esi - 2]
mov esi, dword [esp]
movzx ebx, byte [esi + 1]
shl ebx, cl
add esi, 2
add eax, ebx
mov ebp, eax
mov eax, edx
lea ecx, [edx + 0x10]
cmp edx, 0xf
ja 0x4c3c14
mov eax, ebp
test edi, edi
je 0x4c4700
mov esi, dword [esp + 4]
lea edi, [esi - 3]
mov ebp, dword [esp]
movzx ebx, byte [ebp + 2]
shl ebx, cl
lea esi, [ebp + 3]
add eax, ebx
lea ecx, [edx + 0x18]
cmp edx, 7
ja 0x4c3c7e
test edi, edi
je 0x4c4700
mov ebx, edx
movzx edx, byte [ebp + 3]
shl edx, cl
mov esi, dword [esp + 4]
add esi, 0xfffffffc
add ebp, 4
add eax, edx
mov edx, eax
add ebx, 0x20
mov edi, dword [esp + 0xc]
jmp 0x4c3c22
mov ebp, dword [esp]
jmp 0x4c3c26
mov ebp, eax
mov eax, edi
mov ebx, ecx
mov edi, dword [esp + 0xc]
mov edx, ebp
mov ebp, esi
mov esi, eax
mov eax, dword [esp + 8]
test al, 4
mov dword [esp], ebp
je 0x4c45db
cmp edx, dword [edi + 0x20]
je 0x4c45db
mov dword [esp + 8], edx
mov dword [esp + 0x10], ebx
mov dword [esp + 4], esi
mov eax, dword [esp + 0x68]
mov dword [eax + 0x18], str.incorrect_length_check
mov dword [edi + 4], 0x3f51
mov ebp, dword [edi + 4]
jmp 0x4c264d
mov dword [esi + 0x18], str.incorrect_data_check
mov dword [edi + 4], 0x3f51
mov eax, dword [esp + 0x14]
mov dword [esp + 0x24], eax
mov ebp, dword [edi + 4]
jmp 0x4c264d
mov ebp, esi
mov esi, edi
mov ebx, ecx
mov edi, dword [esp + 0xc]
mov edx, eax
jmp 0x4c3c22
mov ebp, ecx
mov esi, eax
mov eax, dword [edi + 0x24]
test eax, eax
jne 0x4c3462
jmp 0x4c3465
mov dword [esp + 0x1c], 0
mov dword [edi + 4], 0x3f47
cmp dword [esp + 0x6c], 6
mov ebx, dword [esp + 0x10]
mov edx, dword [esp + 8]
je 0x4c49d2
mov dword [edi + 4], 0x3f48
mov eax, dword [esp + 0x24]
mov ebp, dword [esp + 4]
cmp ebp, 6
jb 0x4c3d51
cmp dword [esp + 0x14], 0x102
jb 0x4c3d51
mov ecx, dword [esp + 0x20]
mov esi, dword [esp + 0x68]
mov dword [esi + 0xc], ecx
mov ecx, dword [esp + 0x14]
mov dword [esi + 0x10], ecx
mov ecx, dword [esp]
mov dword [esi], ecx
mov dword [esi + 4], ebp
mov dword [edi + 0x3c], edx
mov dword [edi + 0x40], ebx
push eax
push esi
call fcn.00534d40
add esp, 8
mov eax, dword [esi + 0xc]
mov dword [esp + 0x20], eax
mov eax, dword [esi + 0x10]
mov dword [esp + 0x14], eax
mov eax, dword [esi]
mov dword [esp], eax
mov eax, dword [esi + 4]
mov dword [esp + 4], eax
mov eax, dword [edi + 0x3c]
mov dword [esp + 8], eax
mov eax, dword [edi + 0x40]
mov dword [esp + 0x10], eax
cmp dword [edi + 4], 0x3f3f
jne 0x4c3dd6
mov dword [edi + 0x2348], 0xffffffff
mov ebp, dword [edi + 4]
jmp 0x4c264d
mov dword [edi + 0x2348], 0
movzx ecx, byte [edi + 0x58]
mov esi, 0xffffffff
shl esi, cl
mov edi, dword [edi + 0x50]
not esi
mov dword [esp + 8], edx
mov ecx, edx
and ecx, esi
movzx edx, byte [edi + ecx*4 + 1]
movzx eax, dl
cmp ebx, eax
mov dword [esp + 0x10], ebx
jae 0x4c3dde
mov dword [esp + 0x18], edi
mov ecx, ebx
mov dword [esp + 4], ebp
mov edi, ebp
mov ebx, dword [esp]
sub edi, 1
jb 0x4c449d
movzx eax, byte [ebx]
shl eax, cl
inc ebx
mov ebp, dword [esp + 8]
add ebp, eax
add ecx, 8
mov dword [esp + 8], ebp
and ebp, esi
mov eax, dword [esp + 0x18]
movzx edx, byte [eax + ebp*4 + 1]
movzx eax, dl
cmp ecx, eax
jb 0x4c3d92
mov esi, dword [esp + 0x18]
lea esi, [esi + ebp*4]
mov dword [esp], ebx
mov dword [esp + 0x10], ecx
mov ebp, edi
mov edi, dword [esp + 0x18]
jmp 0x4c3de1
mov ebp, dword [edi + 4]
jmp 0x4c264d
lea esi, [edi + ecx*4]
movzx ebx, word [esi + 2]
mov ch, byte [esi]
mov cl, ch
dec cl
cmp cl, 0xe
ja 0x4c3e82
movzx ecx, ch
add ecx, eax
mov edx, 0xffffffff
shl edx, cl
movzx ebx, bx
not edx
mov esi, dword [esp + 8]
mov dword [esp + 0x28], edx
and esi, edx
mov ecx, eax
shr esi, cl
mov dword [esp + 0x30], ebx
add esi, ebx
movzx edx, byte [edi + esi*4 + 1]
lea ecx, [eax + edx]
mov ebx, dword [esp + 0x10]
cmp ecx, ebx
jbe 0x4c3e93
mov dword [esp + 0x18], edi
mov dword [esp + 4], ebp
mov esi, ebp
mov edi, dword [esp]
sub esi, 1
jb 0x4c449d
movzx edx, byte [edi]
inc edi
mov ecx, ebx
shl edx, cl
mov ebp, dword [esp + 8]
add ebp, edx
add ebx, 8
mov dword [esp + 8], ebp
and ebp, dword [esp + 0x28]
mov ecx, eax
shr ebp, cl
add ebp, dword [esp + 0x30]
mov ecx, dword [esp + 0x18]
movzx edx, byte [ecx + ebp*4 + 1]
lea ecx, [eax + edx]
cmp ecx, ebx
ja 0x4c3e36
mov ecx, dword [esp + 0x18]
lea ecx, [ecx + ebp*4]
mov dword [esp], edi
mov dword [esp + 0x10], ebx
mov ebp, esi
jmp 0x4c3e96
xor eax, eax
mov edi, dword [esp + 8]
mov word [esp + 0x18], bx
mov ebx, dword [esp + 0x10]
jmp 0x4c3eaf
lea ecx, [edi + esi*4]
movzx esi, word [ecx + 2]
mov word [esp + 0x18], si
mov ch, byte [ecx]
mov cl, al
mov edi, dword [esp + 8]
shr edi, cl
mov ebx, dword [esp + 0x10]
sub ebx, eax
mov dword [esp + 4], ebp
movzx esi, dl
sub ebx, esi
mov dword [esp + 0x10], ebx
add eax, esi
mov esi, dword [esp + 0xc]
mov dword [esi + 0x2348], eax
movzx eax, word [esp + 0x18]
mov dword [esi + 0x44], eax
mov cl, dl
shr edi, cl
test ch, ch
mov edx, edi
je 0x4c42ed
mov edi, esi
movzx ecx, ch
test cl, 0x20
jne 0x4c4302
test cl, 0x40
jne 0x4c431f
mov eax, ecx
and eax, 0xf
mov dword [edi + 0x4c], eax
mov dword [edi + 4], 0x3f49
mov ecx, dword [esp + 4]
mov ebx, dword [esp + 0x10]
test eax, eax
jne 0x4c2ab5
mov dword [esp + 4], ecx
mov eax, edi
mov esi, dword [edi + 0x44]
mov dword [eax + 0x234c], esi
mov dword [eax + 4], 0x3f4a
mov edi, eax
movzx ecx, byte [edi + 0x5c]
mov esi, 0xffffffff
shl esi, cl
mov ebp, dword [edi + 0x54]
not esi
mov dword [esp + 8], edx
mov ecx, edx
and ecx, esi
movzx edx, byte [ebp + ecx*4 + 1]
movzx eax, dl
cmp ebx, eax
mov edi, dword [esp]
mov dword [esp + 0x10], ebx
jae 0x4c3fa8
mov dword [esp + 0x18], ebp
mov ecx, ebx
mov ebx, edi
mov edi, dword [esp + 4]
sub edi, 1
jb 0x4c449d
movzx eax, byte [ebx]
shl eax, cl
inc ebx
mov ebp, dword [esp + 8]
add ebp, eax
add ecx, 8
mov dword [esp + 8], ebp
and ebp, esi
mov eax, dword [esp + 0x18]
movzx edx, byte [eax + ebp*4 + 1]
movzx eax, dl
cmp ecx, eax
jb 0x4c3f63
mov esi, dword [esp + 0x18]
lea esi, [esi + ebp*4]
mov ebp, dword [esp + 0x18]
mov dword [esp + 4], edi
mov edi, ebx
mov dword [esp + 0x10], ecx
jmp 0x4c3fb1
lea esi, [ecx*4]
add esi, ebp
mov dword [esp], edi
movzx edi, word [esi + 2]
movzx ecx, byte [esi]
cmp ecx, 0x10
jae 0x4c4055
add ecx, eax
mov edx, 0xffffffff
shl edx, cl
movzx ebx, di
not edx
mov edi, dword [esp + 8]
mov esi, edi
mov dword [esp + 0x28], edx
and esi, edx
mov ecx, eax
shr esi, cl
mov dword [esp + 0x30], ebx
add esi, ebx
movzx edx, byte [ebp + esi*4 + 1]
lea ecx, [eax + edx]
mov ebx, dword [esp + 0x10]
cmp ecx, ebx
jbe 0x4c4072
mov dword [esp + 0x18], ebp
mov esi, dword [esp + 4]
mov edi, dword [esp]
sub esi, 1
jb 0x4c449d
movzx edx, byte [edi]
inc edi
mov ecx, ebx
shl edx, cl
mov ebp, dword [esp + 8]
add ebp, edx
add ebx, 8
mov dword [esp + 8], ebp
and ebp, dword [esp + 0x28]
mov ecx, eax
shr ebp, cl
add ebp, dword [esp + 0x30]
mov ecx, dword [esp + 0x18]
movzx edx, byte [ecx + ebp*4 + 1]
lea ecx, [eax + edx]
cmp ecx, ebx
ja 0x4c4003
mov ecx, dword [esp + 0x18]
lea ebp, [ecx + ebp*4]
mov dword [esp], edi
mov dword [esp + 4], esi
mov dword [esp + 0x10], ebx
mov edi, dword [esp + 8]
jmp 0x4c4076
mov word [esp + 0x28], di
mov ebp, dword [esp + 0xc]
mov eax, dword [ebp + 0x2348]
mov edi, dword [esp + 8]
mov ebx, dword [esp + 0x10]
mov dword [esp + 0x18], ecx
jmp 0x4c409b
lea ebp, [ebp + esi*4]
movzx ecx, word [ebp + 2]
mov word [esp + 0x28], cx
mov ecx, eax
shr edi, cl
movzx ecx, byte [ebp]
mov dword [esp + 0x18], ecx
mov ebx, dword [esp + 0x10]
sub ebx, eax
mov ebp, dword [esp + 0xc]
add eax, dword [ebp + 0x2348]
movzx esi, dl
mov ecx, edx
shr edi, cl
mov edx, edi
add eax, esi
mov dword [ebp + 0x2348], eax
sub ebx, esi
mov dword [esp + 0x10], ebx
movzx eax, byte [esp + 0x18]
test al, 0x40
jne 0x4c4114
movzx ecx, word [esp + 0x28]
mov dword [ebp + 0x48], ecx
mov ecx, eax
and ecx, 0xf
mov dword [ebp + 0x4c], ecx
mov dword [ebp + 4], 0x3f4b
mov edi, ebp
mov esi, dword [esp]
mov ebx, dword [esp + 0x10]
test ecx, ecx
je 0x4c4134
mov eax, edx
cmp ebx, ecx
jae 0x4c413a
mov dword [esp + 0x10], ebx
mov edx, ebx
mov ebx, esi
mov edi, dword [esp + 4]
mov dword [esp], esi
sub edi, 1
jb 0x4c4519
movzx esi, byte [ebx]
mov ebp, ecx
mov ecx, edx
shl esi, cl
mov ecx, ebp
inc ebx
add eax, esi
add edx, 8
cmp edx, ebp
jb 0x4c40f4
jmp 0x4c4142
mov eax, dword [esp + 0x68]
mov dword [eax + 0x18], 0x58b6bf
mov dword [ebp + 4], 0x3f51
mov edi, ebp
mov dword [esp + 8], edx
mov ebp, dword [ebp + 4]
jmp 0x4c264d
mov dword [esp + 8], edx
jmp 0x4c4170
mov edx, ebx
mov ebx, esi
mov edi, dword [esp + 4]
mov esi, 0xffffffff
shl esi, cl
not esi
and esi, eax
mov ebp, dword [esp + 0xc]
add dword [ebp + 0x48], esi
mov esi, ebp
shr eax, cl
mov dword [esp + 8], eax
add dword [ebp + 0x2348], ecx
sub edx, ecx
mov ecx, ebx
mov dword [esp + 4], edi
mov edi, ebp
mov esi, ebx
mov ebx, edx
mov dword [edi + 4], 0x3f4c
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x14]
test eax, eax
mov dword [esp], esi
je 0x4c45e1
sub edx, eax
mov eax, dword [edi + 0x48]
mov ecx, eax
sub ecx, edx
mov dword [esp + 0x10], ebx
jbe 0x4c41c1
cmp ecx, dword [edi + 0x30]
jbe 0x4c41d0
cmp dword [edi + 0x2344], 0
je 0x4c41d0
mov eax, dword [esp + 0x68]
mov dword [eax + 0x18], 0x58b6d5
mov dword [edi + 4], 0x3f51
mov ebp, dword [edi + 4]
jmp 0x4c264d
mov ebp, dword [esp + 0x20]
mov ebx, ebp
sub ebx, eax
mov ecx, dword [edi + 0x44]
mov eax, ecx
jmp 0x4c41f6
mov ebx, dword [edi + 0x34]
mov eax, ecx
sub eax, ebx
jbe 0x4c41e3
mov ebx, dword [edi + 0x2c]
sub ebx, eax
add ebx, dword [edi + 0x38]
jmp 0x4c41ea
sub ebx, ecx
add ebx, dword [edi + 0x38]
mov eax, ecx
mov ebp, dword [esp + 0x20]
mov ecx, dword [edi + 0x44]
cmp eax, ecx
cmovae eax, ecx
mov edx, dword [esp + 0x14]
cmp eax, edx
cmovae eax, edx
sub ecx, eax
mov dword [edi + 0x44], ecx
cmp eax, 0x10
jb 0x4c4242
mov ecx, ebp
sub ecx, ebx
cmp ecx, 0x10
jb 0x4c4242
mov esi, eax
and esi, 0xfffffff0
lea ecx, [esi + ebp]
mov edx, eax
and edx, 0xf
mov dword [esp + 0x20], edx
lea edx, [ebx + esi]
xor edi, edi
movups xmm0, xmmword [ebx + edi]
movups xmmword [ebp + edi], xmm0
add edi, 0x10
cmp esi, edi
jne 0x4c4228
cmp eax, esi
mov ebp, dword [esp + 0x20]
jne 0x4c4248
jmp 0x4c42c0
mov ecx, ebp
mov ebp, eax
mov edx, ebx
mov esi, ebp
and esi, 7
je 0x4c4267
xor edi, edi
movzx ebx, byte [edx + edi]
mov byte [ecx + edi], bl
inc edi
cmp esi, edi
jne 0x4c4251
add ecx, edi
mov esi, ebp
sub esi, edi
add edx, edi
jmp 0x4c4269
mov esi, ebp
dec ebp
cmp ebp, 7
jb 0x4c42c0
xor edi, edi
movzx ebx, byte [edx + edi]
mov byte [ecx + edi], bl
movzx ebx, byte [edx + edi + 1]
mov byte [ecx + edi + 1], bl
movzx ebx, byte [edx + edi + 2]
mov byte [ecx + edi + 2], bl
movzx ebx, byte [edx + edi + 3]
mov byte [ecx + edi + 3], bl
movzx ebx, byte [edx + edi + 4]
mov byte [ecx + edi + 4], bl
movzx ebx, byte [edx + edi + 5]
mov byte [ecx + edi + 5], bl
movzx ebx, byte [edx + edi + 6]
mov byte [ecx + edi + 6], bl
movzx ebx, byte [edx + edi + 7]
mov byte [ecx + edi + 7], bl
add edi, 8
cmp esi, edi
jne 0x4c4271
add ecx, edi
sub dword [esp + 0x14], eax
mov edi, dword [esp + 0xc]
cmp dword [edi + 0x44], 0
je 0x4c42da
mov dword [esp + 0x20], ecx
mov ebp, dword [edi + 4]
jmp 0x4c264d
mov dword [edi + 4], 0x3f48
mov dword [esp + 0x20], ecx
mov ebp, dword [edi + 4]
jmp 0x4c264d
mov dword [esp + 8], edx
mov dword [esi + 4], 0x3f4d
mov edi, esi
mov ebp, dword [esi + 4]
jmp 0x4c264d
mov dword [esp + 8], edx
mov dword [edi + 0x2348], 0xffffffff
mov dword [edi + 4], 0x3f3f
mov ebp, dword [edi + 4]
jmp 0x4c264d
mov dword [esp + 8], edx
mov eax, dword [esp + 0x68]
mov dword [eax + 0x18], 0x58b6a3
mov dword [edi + 4], 0x3f51
mov ebp, dword [edi + 4]
jmp 0x4c264d
mov eax, dword [esp + 8]
and eax, 0xf
cmp eax, 8
jne 0x4c4401
mov esi, edi
mov eax, dword [esp + 8]
mov edi, eax
shr eax, 4
mov ecx, eax
and ecx, 0xf
lea edx, [ecx + 8]
mov esi, dword [esi + 0x28]
test esi, esi
jne 0x4c4370
mov esi, dword [esp + 0xc]
mov dword [esi + 0x28], edx
mov esi, edx
cmp ecx, 7
ja 0x4c4438
cmp edx, esi
ja 0x4c4438
mov eax, 0x100
shl eax, cl
mov esi, dword [esp + 0xc]
mov dword [esi + 0x18], eax
mov dword [esi + 0x14], 0
push 0
push 0
push 0
call fcn.00534bb0
add esp, 0xc
mov dword [esi + 0x1c], eax
mov ebp, dword [esp + 0x68]
mov dword [ebp + 0x30], eax
xor eax, eax
test edi, 0x2000
mov edi, esi
sete al
lea eax, [eax*2 + 0x3f3d]
mov dword [esi + 4], eax
jmp 0x4c3a06
mov ebp, eax
jmp 0x4c2fa4
test eax, eax
mov edi, dword [esp + 0xc]
je 0x4c4674
mov edx, dword [esp]
movzx eax, byte [edx + 3]
shl eax, cl
mov ecx, dword [esp + 4]
add ecx, 0xfffffffc
add edx, 4
mov dword [esp], edx
mov edx, esi
mov esi, ecx
add edx, eax
add ebx, 0x20
jmp 0x4c3084
mov dword [edx + 0x18], str.unknown_compression_method
mov dword [edi + 4], 0x3f51
mov ebp, dword [edi + 4]
jmp 0x4c264d
mov eax, dword [esp + 0x68]
mov dword [eax + 0x18], str.invalid_bit_length_repeat
mov dword [edi + 4], 0x3f51
mov dword [esp], ebx
mov dword [esp + 4], ebp
mov ebp, dword [edi + 4]
jmp 0x4c264d
add dword [esp + 0x10], 0xfffffffc
mov ebp, dword [esp + 0x68]
mov dword [ebp + 0x18], str.invalid_window_size
mov edi, dword [esp + 0xc]
mov dword [edi + 4], 0x3f51
mov dword [esp + 8], eax
mov ebp, dword [edi + 4]
jmp 0x4c264d
mov ecx, dword [esp + 0x68]
mov dword [ecx + 0x18], str.invalid_bit_length_repeat
mov ecx, dword [esp + 0xc]
mov dword [ecx + 4], 0x3f51
mov dword [esp], ebx
mov dword [esp + 4], ebp
mov dword [esp + 0x10], eax
mov dword [esp + 8], edi
mov edi, ecx
mov ebp, dword [ecx + 4]
jmp 0x4c264d
cmp dword [esi + 4], 0
jne 0x4c492c
jmp 0x4c25c2
mov eax, dword [esp + 4]
mov ebx, dword [esp + 0x10]
lea ebx, [ebx + eax*8]
add dword [esp], eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x18], eax
mov ebp, dword [esp + 0x68]
xor esi, esi
mov edi, dword [esp + 0xc]
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 8]
jmp 0x4c4746
mov ecx, dword [esp + 4]
mov ebx, dword [esp + 0x10]
lea ebx, [ebx + ecx*8]
add dword [esp], ecx
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x18], ecx
mov ebp, dword [esp + 0x68]
xor esi, esi
mov ecx, dword [esp + 0xc]
mov eax, dword [esp + 0x14]
mov edx, edi
mov edi, ecx
jmp 0x4c4746
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x14]
mov dword [esp], ebx
mov ebx, edi
mov ebp, dword [esp + 0x68]
mov edi, esi
xor esi, esi
mov edx, dword [esp + 8]
jmp 0x4c4746
mov ecx, dword [esp + 4]
mov ebx, dword [esp + 0x10]
lea ebx, [ebx + ecx*8]
add dword [esp], ecx
xor esi, esi
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x18], ecx
mov edi, dword [esp + 0xc]
mov ecx, dword [esp + 0x14]
mov edx, eax
mov eax, ecx
mov ebp, dword [esp + 0x68]
jmp 0x4c4746
mov dword [esp], ebx
mov ebx, eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x18], eax
mov ebp, dword [esp + 0x68]
xor esi, esi
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x14]
mov edx, edi
mov edi, eax
jmp 0x4c46fc
mov ecx, dword [esp + 4]
mov ebx, dword [esp + 0x10]
lea ebx, [ebx + ecx*8]
add dword [esp], ecx
xor esi, esi
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x18], ecx
mov edi, dword [esp + 0xc]
mov edx, eax
mov ebp, dword [esp + 0x68]
mov eax, dword [esp + 0x14]
jmp 0x4c4746
xor esi, esi
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x14]
mov dword [esp], ebp
mov ebp, dword [esp + 0x68]
jmp 0x4c4746
add ebp, edi
mov dword [esp], ebp
mov eax, dword [esp + 4]
sub eax, edi
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 8]
mov ebx, dword [esp + 0x10]
mov ebp, dword [esp + 0x68]
mov edi, esi
mov esi, eax
jmp 0x4c46fc
xor edx, edx
xor ebx, ebx
jmp 0x4c4640
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x18], eax
xor eax, eax
mov ebp, dword [esp + 0x68]
mov edx, dword [esp + 8]
mov esi, dword [esp + 4]
jmp 0x4c4746
mov dword [esp], ebp
jmp 0x4c46ea
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x68]
mov dword [edx + 0xc], ecx
mov dword [edx + 0x10], eax
mov eax, dword [esp]
mov dword [edx], eax
mov dword [edx + 4], ebp
mov dword [edi + 0x3c], esi
mov dword [edi + 0x40], ebx
mov eax, 2
jmp 0x4c492c
mov dword [esp + 0x18], 1
mov esi, dword [esp + 4]
jmp 0x4c4640
mov dword [esp + 0x18], 1
mov dword [edi + 4], 0x3f50
jmp 0x4c473e
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0xc]
mov ebx, dword [esp + 0x10]
mov ebp, dword [esp + 0x68]
mov esi, eax
mov eax, edi
mov edi, ecx
jmp 0x4c4746
mov dword [esp], esi
xor esi, esi
mov ebx, edx
jmp 0x4c4685
mov dword [esp], edx
mov ebx, ecx
mov ecx, dword [esp + 0x14]
mov edx, esi
xor esi, esi
jmp 0x4c46f0
xor esi, esi
mov edi, dword [esp + 0xc]
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 8]
jmp 0x4c46f0
xor esi, esi
mov ecx, dword [esp + 0x14]
mov edx, edi
mov ebx, dword [esp + 0x10]
mov edi, dword [esp + 0xc]
jmp 0x4c46f0
mov eax, 0xfffffffe
jmp 0x4c492c
mov dword [esp + 0x18], 1
jmp 0x4c498c
mov dword [esp + 0x1c], 0xfffffffd
mov ecx, dword [esp + 0x14]
mov esi, dword [esp + 4]
jmp 0x4c46f0
mov eax, 0xfffffffc
jmp 0x4c492c
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x18], eax
xor eax, eax
jmp 0x4c4990
mov dword [esp], ecx
xor esi, esi
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x18], eax
mov ebp, dword [esp + 0x68]
mov eax, ecx
jmp 0x4c4746
mov dword [esp], esi
xor esi, esi
mov ebx, ecx
mov edi, dword [esp + 0xc]
mov ecx, dword [esp + 0x14]
mov edx, eax
jmp 0x4c46f0
mov dword [esp], edx
xor esi, esi
mov ecx, dword [esp + 0x14]
mov edi, dword [esp + 0xc]
mov edx, dword [esp + 8]
jmp 0x4c46f0
xor esi, esi
jmp 0x4c4689
xor esi, esi
jmp 0x4c49c3
xor ebx, ebx
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x14]
mov ebp, dword [esp + 0x68]
mov ecx, dword [esp + 0x20]
mov dword [ebp + 0xc], ecx
mov dword [ebp + 0x10], eax
mov eax, dword [esp]
mov dword [ebp], eax
mov dword [ebp + 4], esi
mov dword [edi + 0x3c], edx
mov dword [edi + 0x40], ebx
cmp dword [edi + 0x2c], 0
mov ecx, ebp
mov esi, dword [ebp + 0x10]
je 0x4c480d
mov edi, dword [ecx + 0xc]
mov ebx, dword [ecx + 0x1c]
mov eax, dword [ebx + 0x38]
test eax, eax
jne 0x4c479f
mov edx, ecx
movzx ecx, byte [ebx + 0x28]
mov eax, 1
shl eax, cl
push 1
push eax
push dword [edx + 0x28]
call dword [edx + 0x20]
add esp, 0xc
mov dword [ebx + 0x38], eax
test eax, eax
je 0x4c4963
mov ebp, dword [esp + 0x24]
sub ebp, esi
mov esi, dword [ebx + 0x2c]
test esi, esi
jne 0x4c47c8
movzx ecx, byte [ebx + 0x28]
mov esi, 1
shl esi, cl
mov dword [ebx + 0x2c], esi
mov dword [ebx + 0x34], 0
mov dword [ebx + 0x30], 0
cmp esi, ebp
jbe 0x4c4838
mov ecx, dword [ebx + 0x34]
sub esi, ecx
cmp esi, ebp
mov edx, ebp
cmovb edx, esi
add eax, ecx
mov ecx, edi
sub ecx, ebp
mov dword [esp + 4], edx
push edx
push ecx
push eax
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
add esp, 0xc
cmp esi, ebp
jae 0x4c4934
sub ebp, dword [esp + 4]
sub edi, ebp
push ebp
push edi
push dword [ebx + 0x38]
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
add esp, 0xc
mov dword [ebx + 0x34], ebp
jmp 0x4c484c
cmp dword [esp + 0x24], esi
je 0x4c4856
mov eax, dword [esp + 0xc]
mov eax, dword [eax + 4]
cmp eax, 0x3f50
ja 0x4c4856
cmp dword [esp + 0x6c], 4
jne 0x4c476e
cmp eax, 0x3f4d
ja 0x4c4856
jmp 0x4c476e
sub edi, esi
push esi
push edi
push eax
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
add esp, 0xc
mov dword [ebx + 0x34], 0
mov eax, dword [ebx + 0x2c]
mov dword [ebx + 0x30], eax
mov ecx, dword [esp + 0x68]
mov edi, dword [ecx + 4]
mov esi, dword [ecx + 0x10]
mov eax, dword [esp + 0x48]
sub eax, edi
add dword [ecx + 8], eax
mov ebp, dword [esp + 0x24]
mov eax, ebp
sub eax, esi
add dword [ecx + 0x14], eax
mov ecx, dword [esp + 0xc]
add dword [ecx + 0x20], eax
test byte [ecx + 0xc], 4
je 0x4c48be
cmp ebp, esi
je 0x4c48be
mov ecx, dword [esp + 0x68]
mov edx, dword [ecx + 0xc]
sub edx, eax
mov ecx, dword [esp + 0xc]
cmp dword [ecx + 0x14], 0
mov ecx, dword [ecx + 0x1c]
je 0x4c48a1
push eax
push edx
push ecx
call fcn.004c56f0
jmp 0x4c48a9
push eax
push edx
push ecx
call fcn.00534bb0
add esp, 0xc
mov ecx, dword [esp + 0xc]
mov dword [ecx + 0x1c], eax
mov ecx, dword [esp + 0x68]
mov dword [ecx + 0x30], eax
mov ebp, dword [esp + 0x24]
xor eax, eax
mov ecx, dword [esp + 0xc]
cmp dword [ecx + 8], 0
setne al
shl eax, 6
add eax, dword [ecx + 0x40]
mov edx, dword [ecx + 4]
xor ecx, ecx
cmp edx, 0x3f3f
sete cl
shl ecx, 7
cmp edx, 0x3f47
sete bl
cmp edx, 0x3f42
sete dl
or dl, bl
movzx edx, dl
shl edx, 8
add edx, ecx
add edx, eax
mov ebx, dword [esp + 0x48]
xor ebx, edi
xor ebp, esi
mov esi, dword [esp + 0x18]
test esi, esi
mov eax, 0xfffffffb
cmovne eax, esi
mov ecx, dword [esp + 0x68]
mov dword [ecx + 0x2c], edx
or ebp, ebx
cmove esi, eax
cmp dword [esp + 0x6c], 4
cmove esi, eax
mov eax, esi
add esp, 0x54
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, dword [ebx + 0x34]
mov edi, dword [esp + 4]
add ecx, edi
mov edx, dword [ebx + 0x2c]
mov eax, dword [ebx + 0x30]
xor esi, esi
cmp ecx, edx
cmovne esi, ecx
mov dword [ebx + 0x34], esi
cmp eax, edx
mov ecx, dword [esp + 0x68]
jae 0x4c4856
add eax, edi
mov dword [ebx + 0x30], eax
jmp 0x4c4856
mov eax, dword [esp + 0xc]
mov dword [eax + 4], 0x3f52
mov eax, 0xfffffffc
jmp 0x4c492c
mov dword [esp], edx
xor esi, esi
mov ebx, ecx
jmp 0x4c49c3
shr edx, 3
add ebx, 0xfffffffd
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x14]
mov esi, dword [esp + 4]
mov ebp, dword [esp + 0x68]
jmp 0x4c4746
xor esi, esi
mov edi, dword [esp + 0xc]
mov ecx, dword [esp + 0x14]
mov ebx, dword [esp + 0x10]
jmp 0x4c46f0
mov dword [esp], esi
xor esi, esi
mov ebx, ecx
jmp 0x4c4685
mov dword [esp], edi
xor esi, esi
mov ebx, edx
mov edi, dword [esp + 0xc]
mov ecx, dword [esp + 0x14]
mov edx, ebp
jmp 0x4c46f0
mov dword [esp + 0x18], 0
jmp 0x4c498c