Function at 0x4039b0
Capabilities:
Contain obfuscated stackstrings

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x9c
mov edx, dword [ebp + 8]
test edx, edx
je case.default.0x403a51
mov eax, dword [ebp + 8]
mov edi, dword [eax + 0x1c]
test edi, edi
je case.default.0x403a51
mov edx, dword [eax + 0xc]
test edx, edx
je case.default.0x403a51
mov ecx, dword [eax]
test ecx, ecx
je 0x404fc0
mov eax, dword [edi]
mov ebx, ecx
mov dword [ebp - 0x38], edx
cmp eax, 0xb
je 0x403c00
mov esi, dword [ebp + 8]
mov edx, dword [ebp + 0xc]
mov dword [ebp - 0x2c], edi
mov dword [ebp - 0x44], 0
mov esi, dword [esi + 0x10]
sub edx, 5
mov dword [ebp - 0x5c], edx
lea edx, [edi + 0x530]
mov ecx, esi
mov dword [ebp - 0x40], esi
mov esi, dword [ebp + 8]
mov dword [ebp - 0x34], ecx
mov dword [ebp - 0x64], edx
lea edx, [edi + 0x2f0]
mov esi, dword [esi + 4]
mov dword [ebp - 0x60], edx
mov dword [ebp - 0x3c], esi
mov esi, dword [edi + 0x38]
mov ecx, dword [ebp - 0x3c]
mov dword [ebp - 0x30], esi
mov esi, dword [edi + 0x3c]
mov edi, ebx
mov ebx, esi
mov esi, ecx
cmp eax, 0x1e
ja case.default.0x403a51
jmp dword [eax*4 + 0x40f610]
cmp ebx, 0x1f
ja 0x403afb
test esi, esi
je 0x404f20
lea eax, [edi + 1]
mov ecx, ebx
lea edx, [esi - 1]
mov dword [ebp - 0x48], eax
movzx eax, byte [edi]
shl eax, cl
lea ecx, [ebx + 8]
add dword [ebp - 0x30], eax
cmp ecx, 0x1f
ja 0x405803
test edx, edx
je 0x404fe0
lea eax, [edi + 2]
lea edx, [esi - 2]
mov dword [ebp - 0x48], eax
movzx eax, byte [edi + 1]
shl eax, cl
lea ecx, [ebx + 0x10]
add dword [ebp - 0x30], eax
cmp ecx, 0x1f
ja 0x405803
test edx, edx
je 0x404fe0
lea eax, [edi + 3]
add ebx, 0x18
lea edx, [esi - 3]
mov dword [ebp - 0x48], eax
movzx eax, byte [edi + 2]
shl eax, cl
add dword [ebp - 0x30], eax
cmp ebx, 0x1f
ja 0x405803
test edx, edx
je 0x405a9d
lea eax, [edi + 4]
mov ecx, ebx
sub esi, 4
mov dword [ebp - 0x48], eax
movzx eax, byte [edi + 3]
shl eax, cl
add dword [ebp - 0x30], eax
mov edi, dword [ebp - 0x48]
mov ebx, dword [ebp - 0x30]
mov dword [ebp - 0x30], 0
mov edx, ebx
mov eax, ebx
shr eax, 0x18
shl edx, 0x18
add edx, eax
mov eax, ebx
shr eax, 8
and eax, 0xff00
add edx, eax
mov eax, ebx
mov ebx, dword [ebp - 0x2c]
and eax, 0xff00
shl eax, 8
add eax, edx
mov edx, dword [ebp + 8]
mov dword [ebx + 0x18], eax
mov dword [edx + 0x30], eax
mov dword [ebx], 0xa
xor ebx, ebx
mov eax, dword [ebp - 0x2c]
mov ecx, dword [eax + 0xc]
test ecx, ecx
je 0x405adb
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.00406700
mov edx, dword [ebp - 0x2c]
mov ecx, dword [ebp + 8]
mov dword [edx + 0x18], eax
mov dword [ecx + 0x30], eax
mov dword [edx], 0xb
cmp dword [ebp - 0x5c], 1
jbe 0x404f20
mov eax, dword [ebp - 0x2c]
mov edx, dword [eax + 4]
test edx, edx
jne 0x403c20
cmp ebx, 2
ja 0x40595e
test esi, esi
je 0x404f20
movzx eax, byte [edi]
mov ecx, ebx
lea edx, [edi + 1]
sub esi, 1
add ebx, 8
shl eax, cl
add dword [ebp - 0x30], eax
mov ecx, dword [ebp - 0x30]
mov edi, dword [ebp - 0x2c]
mov eax, ecx
shr ecx, 1
and eax, 1
mov dword [edi + 4], eax
mov eax, ecx
and eax, 3
cmp eax, 2
je 0x405356
cmp eax, 3
je 0x405716
cmp eax, 1
je 0x4056dd
mov dword [edi], 0xd
mov eax, 0xd
shr ecx, 2
sub ebx, 3
mov edi, edx
mov dword [ebp - 0x30], ecx
jmp 0x403a48
mov eax, dword [ebp + 8]
mov dword [edi], 0xc
mov ebx, dword [eax]
mov eax, dword [eax + 0xc]
mov dword [ebp - 0x38], eax
mov eax, 0xc
jmp 0x4039fa
mov ecx, ebx
mov dword [eax], 0x1a
and ebx, 0xfffffff8
and ecx, 7
mov eax, 0x1a
shr dword [ebp - 0x30], cl
jmp switch.0x00403a51
mov eax, dword [ebp - 0x2c]
mov edx, dword [eax + 0x48]
test edx, edx
je 0x403ca9
cmp ebx, edx
jae 0x403c84
test esi, esi
je 0x404f20
mov ecx, ebx
mov ebx, edx
mov edx, dword [ebp - 0x30]
jmp 0x403c68
test esi, esi
je 0x404fa5
add edi, 1
movzx eax, byte [edi - 1]
sub esi, 1
shl eax, cl
add ecx, 8
add edx, eax
cmp ecx, ebx
jb 0x403c60
mov dword [ebp - 0x30], edx
mov edx, ebx
mov ebx, ecx
mov ecx, edx
mov eax, 1
sub ebx, edx
shl eax, cl
mov ecx, dword [ebp - 0x2c]
sub eax, 1
and eax, dword [ebp - 0x30]
add dword [ecx + 0x44], eax
mov ecx, edx
shr dword [ebp - 0x30], cl
mov ecx, dword [ebp - 0x2c]
add dword [ecx + 0x1bc4], edx
mov eax, dword [ebp - 0x2c]
mov dword [eax], 0x18
mov edx, dword [ebp - 0x40]
test edx, edx
je 0x404f20
mov eax, dword [ebp - 0x34]
sub eax, edx
mov edx, dword [ebp - 0x2c]
mov edx, dword [edx + 0x44]
cmp eax, edx
jae 0x405093
sub edx, eax
mov eax, dword [ebp - 0x2c]
mov ecx, edx
cmp edx, dword [eax + 0x2c]
ja 0x4052b0
mov eax, dword [ebp - 0x2c]
mov eax, dword [eax + 0x30]
cmp ecx, eax
jbe 0x4054c2
mov edx, dword [ebp - 0x2c]
sub ecx, eax
mov eax, dword [edx + 0x28]
sub eax, ecx
add eax, dword [edx + 0x34]
mov dword [ebp - 0x48], eax
mov eax, edx
mov edx, dword [eax + 0x40]
cmp ecx, edx
cmova ecx, edx
jmp 0x4050a3
mov eax, dword [ebp - 0x2c]
mov dword [eax], 0x14
cmp esi, 5
jbe 0x403d3b
cmp dword [ebp - 0x40], 0x101
ja 0x405190
mov eax, dword [ebp - 0x2c]
mov ecx, dword [eax + 0x54]
mov edx, dword [eax + 0x4c]
mov dword [eax + 0x1bc4], 0
mov eax, 1
shl eax, cl
mov dword [ebp - 0x4c], edx
sub eax, 1
mov ecx, eax
mov dword [ebp - 0x54], eax
mov eax, dword [ebp - 0x30]
and eax, ecx
lea eax, [edx + eax*4]
movzx ecx, byte [eax]
movzx edx, byte [eax + 1]
movzx eax, word [eax + 2]
mov byte [ebp - 0x48], cl
mov word [ebp - 0x50], ax
movzx eax, dl
cmp ebx, eax
mov dword [ebp - 0x58], eax
jae 0x403ddc
test esi, esi
je 0x404f20
mov ecx, ebx
mov ebx, esi
mov esi, dword [ebp - 0x30]
jmp 0x403d9d
test ebx, ebx
je 0x4053f2
add edi, 1
movzx eax, byte [edi - 1]
mov edx, dword [ebp - 0x4c]
sub ebx, 1
shl eax, cl
add ecx, 8
add esi, eax
mov eax, dword [ebp - 0x54]
and eax, esi
lea eax, [edx + eax*4]
movzx edx, byte [eax]
mov byte [ebp - 0x48], dl
movzx edx, byte [eax + 1]
movzx eax, word [eax + 2]
mov word [ebp - 0x50], ax
movzx eax, dl
cmp eax, ecx
ja 0x403d95
mov dword [ebp - 0x30], esi
mov dword [ebp - 0x58], eax
mov esi, ebx
mov ebx, ecx
cmp byte [ebp - 0x48], 0
jne 0x4054d4
mov eax, dword [ebp - 0x58]
mov ecx, edx
mov edx, dword [ebp - 0x2c]
shr dword [ebp - 0x30], cl
sub ebx, eax
mov dword [edx + 0x1bc4], eax
movzx eax, word [ebp - 0x50]
mov dword [edx + 0x40], eax
mov eax, dword [ebp - 0x2c]
mov dword [eax], 0x19
mov eax, 0x19
jmp switch.0x00403a51
mov eax, dword [ebp - 0x2c]
mov edx, dword [eax + 0x48]
test edx, edx
jne 0x405205
mov eax, dword [ebp - 0x2c]
mov edx, dword [ebp - 0x2c]
mov eax, dword [eax + 0x40]
mov dword [edx + 0x1bc8], eax
mov dword [edx], 0x16
mov eax, dword [ebp - 0x2c]
mov ecx, dword [eax + 0x58]
mov edx, dword [eax + 0x50]
mov eax, 1
shl eax, cl
mov dword [ebp - 0x50], edx
sub eax, 1
mov ecx, eax
mov dword [ebp - 0x58], eax
mov eax, dword [ebp - 0x30]
and eax, ecx
lea eax, [edx + eax*4]
movzx ecx, byte [eax]
mov byte [ebp - 0x48], cl
movzx ecx, byte [eax + 1]
movzx eax, word [eax + 2]
mov byte [ebp - 0x6c], cl
mov word [ebp - 0x4c], ax
movzx eax, cl
cmp ebx, eax
mov dword [ebp - 0x54], eax
jae 0x403edc
test esi, esi
je 0x404f20
mov ecx, ebx
mov ebx, esi
mov esi, edi
mov edi, dword [ebp - 0x30]
jmp 0x403e98
test ebx, ebx
je 0x4053e0
add esi, 1
movzx eax, byte [esi - 1]
mov edx, dword [ebp - 0x50]
sub ebx, 1
shl eax, cl
add ecx, 8
add edi, eax
mov eax, dword [ebp - 0x58]
and eax, edi
lea eax, [edx + eax*4]
movzx edx, byte [eax]
mov byte [ebp - 0x48], dl
movzx edx, byte [eax + 1]
movzx eax, word [eax + 2]
mov word [ebp - 0x4c], ax
movzx eax, dl
cmp eax, ecx
mov dword [ebp - 0x54], eax
ja 0x403e90
mov dword [ebp - 0x30], edi
mov byte [ebp - 0x6c], dl
mov edi, esi
mov esi, ebx
mov ebx, ecx
test byte [ebp - 0x48], 0xf0
jne 0x4052e0
movzx edx, word [ebp - 0x4c]
movzx ecx, byte [ebp - 0x48]
mov dword [ebp - 0x58], edx
add ecx, eax
mov edx, 1
shl edx, cl
mov ecx, edx
sub ecx, 1
mov dword [ebp - 0x68], ecx
and ecx, dword [ebp - 0x30]
mov edx, ecx
movzx ecx, byte [ebp - 0x6c]
shr edx, cl
add edx, dword [ebp - 0x58]
mov ecx, dword [ebp - 0x50]
lea edx, [ecx + edx*4]
movzx ecx, byte [edx]
mov byte [ebp - 0x48], cl
movzx ecx, word [edx + 2]
movzx edx, byte [edx + 1]
mov word [ebp - 0x4c], cx
lea ecx, [eax + edx]
mov dword [ebp - 0x6c], edx
cmp ebx, ecx
jae 0x403f9f
test esi, esi
je 0x404f20
mov edx, esi
mov dword [ebp - 0x54], eax
mov esi, edi
mov edi, edx
jmp 0x403f4d
test edi, edi
je 0x4055a3
add esi, 1
movzx eax, byte [esi - 1]
mov ecx, ebx
mov edx, dword [ebp - 0x50]
add ebx, 8
sub edi, 1
shl eax, cl
add dword [ebp - 0x30], eax
movzx ecx, byte [ebp - 0x54]
mov eax, dword [ebp - 0x30]
and eax, dword [ebp - 0x68]
shr eax, cl
add eax, dword [ebp - 0x58]
lea eax, [edx + eax*4]
movzx ecx, byte [eax]
movzx edx, byte [eax + 1]
mov byte [ebp - 0x48], cl
movzx ecx, word [eax + 2]
mov eax, dword [ebp - 0x54]
add eax, edx
mov word [ebp - 0x4c], cx
cmp eax, ebx
ja 0x403f45
mov dword [ebp - 0x50], edi
mov eax, dword [ebp - 0x54]
mov edi, esi
mov esi, dword [ebp - 0x50]
mov dword [ebp - 0x6c], edx
mov ecx, eax
shr dword [ebp - 0x30], cl
mov ecx, dword [ebp - 0x2c]
sub ebx, eax
mov dword [ebp - 0x54], edx
add eax, dword [ecx + 0x1bc4]
mov dword [ebp - 0x50], eax
mov eax, dword [ebp - 0x6c]
mov edx, dword [ebp - 0x50]
jmp 0x4052ef
mov eax, dword [ebp - 0x2c]
mov eax, dword [eax + 0x10]
test ah, 4
mov edx, eax
je 0x4049e9
cmp ebx, 0xf
mov ecx, dword [ebp - 0x30]
ja 0x404013
test esi, esi
je 0x404f20
mov ecx, ebx
mov ebx, dword [ebp - 0x30]
jmp 0x403ff8
test esi, esi
je 0x4054b0
add edi, 1
movzx edx, byte [edi - 1]
sub esi, 1
shl edx, cl
add ecx, 8
add ebx, edx
cmp ecx, 0xf
jbe 0x403ff0
mov dword [ebp - 0x30], ebx
mov ecx, ebx
mov ebx, dword [ebp - 0x2c]
mov edx, dword [ebx + 0x20]
mov dword [ebx + 0x40], ecx
test edx, edx
je 0x404026
mov dword [edx + 0x14], ecx
mov eax, dword [ebx + 0x10]
test ah, 2
mov edx, eax
jne 0x4057c4
mov eax, edx
xor ebx, ebx
mov dword [ebp - 0x30], 0
and eax, 0x400
jmp 0x404a08
mov dword [edi], 0x1e
lea esi, [esi]
mov eax, 0xfffffffc
add esp, 0x9c
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [ebp - 0x48], esi
mov esi, ebx
mov ebx, edi
mov edi, dword [ebp - 0x2c]
mov dword [ebp - 0x44], 1
mov eax, dword [ebp + 8]
mov ecx, dword [ebp - 0x38]
mov dword [eax], ebx
mov dword [eax + 0xc], ecx
mov ebx, dword [ebp - 0x48]
mov ecx, dword [ebp - 0x40]
mov dword [eax + 4], ebx
mov dword [eax + 0x10], ecx
mov eax, dword [ebp - 0x30]
mov ebx, dword [edi + 0x28]
mov dword [edi + 0x3c], esi
mov dword [edi + 0x38], eax
mov eax, dword [ebp + 8]
test ebx, ebx
mov eax, dword [eax + 0x10]
jne 0x4040c1
cmp eax, dword [ebp - 0x34]
je 0x40415d
mov edx, dword [edi]
cmp edx, 0x1c
ja 0x40415d
cmp dword [ebp + 0xc], 4
jne 0x4040c1
cmp edx, 0x19
ja 0x40415d
mov edx, dword [ebp - 0x34]
sub edx, eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0xc]
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp + 8]
mov esi, dword [eax + 0x1c]
mov eax, dword [esi + 0x34]
test eax, eax
je 0x405430
mov ebx, dword [esi + 0x28]
test ebx, ebx
jne 0x4040ff
mov ecx, dword [esi + 0x24]
mov bl, 1
mov dword [esi + 0x30], 0
mov dword [esi + 0x2c], 0
shl ebx, cl
mov dword [esi + 0x28], ebx
cmp edx, ebx
jae 0x405013
mov ecx, dword [esi + 0x30]
mov dword [ebp - 0x30], edx
sub ebx, ecx
cmp ebx, edx
cmova ebx, edx
add eax, ecx
mov ecx, dword [ebp - 0x2c]
mov dword [esp + 8], ebx
mov dword [esp], eax
sub ecx, edx
mov dword [esp + 4], ecx
call sub.msvcrt.dll_memcpy
mov edx, dword [ebp - 0x30]
mov ecx, edx
sub ecx, ebx
jne 0x405050
mov eax, dword [esi + 0x30]
mov edx, dword [esi + 0x28]
add eax, ebx
cmp eax, edx
mov dword [esi + 0x30], eax
je 0x405040
mov eax, dword [esi + 0x2c]
cmp edx, eax
jbe 0x404157
add ebx, eax
mov dword [esi + 0x2c], ebx
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x10]
mov ecx, dword [ebp + 8]
mov ebx, dword [ebp - 0x34]
mov esi, dword [ebp - 0x3c]
sub esi, dword [ecx + 4]
sub ebx, eax
add dword [ecx + 0x14], ebx
add dword [ecx + 8], esi
mov eax, ecx
add dword [edi + 0x1c], ebx
test ebx, ebx
je 0x4041b0
mov ecx, dword [edi + 8]
test ecx, ecx
je 0x4041b0
mov edx, dword [edi + 0x10]
mov dword [esp + 8], ebx
test edx, edx
je 0x404ff4
mov eax, dword [eax + 0xc]
mov dword [ebp - 0x2c], eax
sub eax, ebx
mov dword [esp + 4], eax
mov eax, dword [edi + 0x18]
mov dword [esp], eax
call fcn.00406ed0
mov ecx, dword [ebp + 8]
mov dword [edi + 0x18], eax
mov dword [ecx + 0x30], eax
cmp dword [edi + 4], 1
mov edx, dword [edi]
sbb eax, eax
not eax
and eax, 0x40
add eax, dword [edi + 0x3c]
cmp edx, 0xb
je 0x404f30
cmp edx, 0xe
je 0x404f14
cmp edx, 0x13
je 0x404f14
xor edx, edx
mov edi, dword [ebp + 8]
add eax, edx
or ebx, esi
mov dword [edi + 0x2c], eax
je 0x4041f6
cmp dword [ebp + 0xc], 4
mov eax, dword [ebp - 0x44]
jne 0x404055
mov edi, dword [ebp - 0x44]
mov eax, 0xfffffffb
test edi, edi
cmovne eax, edi
add esp, 0x9c
pop ebx
pop esi
pop edi
pop ebp
ret
cmp ebx, 0x1f
ja 0x404245
test esi, esi
je 0x404f20
mov edx, dword [ebp - 0x30]
mov ecx, ebx
jmp 0x40422c
test esi, esi
je 0x404fa5
add edi, 1
movzx eax, byte [edi - 1]
sub esi, 1
shl eax, cl
add ecx, 8
add edx, eax
cmp ecx, 0x1f
jbe 0x404224
mov dword [ebp - 0x30], edx
mov eax, dword [ebp - 0x2c]
mov eax, dword [eax + 0x20]
test eax, eax
je 0x404255
mov ebx, dword [ebp - 0x30]
mov dword [eax + 4], ebx
mov eax, dword [ebp - 0x2c]
test byte [eax + 0x11], 2
jne 0x405757
mov dword [eax], 3
mov dword [ebp - 0x30], 0
xor ebx, ebx
jmp 0x404967
mov eax, dword [ebp - 0x2c]
mov eax, dword [eax + 0x40]
mov edx, dword [ebp - 0x2c]
mov dword [edx], 0xf
test eax, eax
je 0x405080
mov ecx, dword [ebp - 0x40]
cmp esi, eax
cmovbe eax, esi
cmp eax, ecx
cmova eax, ecx
test eax, eax
je 0x404f20
mov dword [esp + 8], eax
mov dword [ebp - 0x48], eax
mov eax, dword [ebp - 0x38]
mov dword [esp + 4], edi
mov dword [esp], eax
call sub.msvcrt.dll_memcpy
mov edx, dword [ebp - 0x48]
mov eax, dword [ebp - 0x2c]
sub dword [ebp - 0x40], edx
add dword [ebp - 0x38], edx
sub dword [eax + 0x40], edx
sub esi, edx
add edi, edx
mov eax, dword [eax]
jmp 0x403a48
mov eax, dword [ebp - 0x2c]
mov edx, dword [ebp - 0x2c]
mov eax, dword [eax + 0x68]
mov dword [ebp - 0x50], eax
mov eax, dword [edx + 0x60]
mov dword [ebp - 0x54], edi
mov dword [ebp - 0x68], eax
add eax, dword [edx + 0x64]
mov edx, dword [ebp - 0x30]
mov dword [ebp - 0x58], eax
mov ecx, eax
cmp dword [ebp - 0x50], ecx
jae 0x405aaa
mov eax, dword [ebp - 0x2c]
mov ecx, dword [eax + 0x4c]
mov edi, ecx
mov dword [ebp - 0x48], ecx
mov ecx, dword [eax + 0x54]
mov eax, 1
shl eax, cl
sub eax, 1
mov dword [ebp - 0x4c], eax
and eax, edx
lea eax, [edi + eax*4]
movzx ecx, byte [eax + 1]
movzx eax, word [eax + 2]
mov word [ebp - 0x30], ax
movzx eax, cl
cmp ebx, eax
jae 0x404390
test esi, esi
je 0x4058b6
mov edi, dword [ebp - 0x54]
mov ecx, ebx
jmp 0x404358
test esi, esi
je 0x404fa5
add edi, 1
movzx eax, byte [edi - 1]
mov ebx, dword [ebp - 0x48]
sub esi, 1
shl eax, cl
add ecx, 8
add edx, eax
mov eax, dword [ebp - 0x4c]
and eax, edx
lea eax, [ebx + eax*4]
movzx ebx, byte [eax + 1]
movzx eax, word [eax + 2]
mov word [ebp - 0x30], ax
movzx eax, bl
cmp eax, ecx
ja 0x404350
mov dword [ebp - 0x54], edi
mov edi, ebx
mov ebx, ecx
mov ecx, edi
cmp word [ebp - 0x30], 0xf
jbe 0x405330
cmp word [ebp - 0x30], 0x10
je 0x40580a
cmp word [ebp - 0x30], 0x11
je 0x4058c9
lea edi, [eax + 7]
cmp ebx, edi
mov dword [ebp - 0x30], edi
jae 0x4043f5
test esi, esi
je 0x4058b6
mov ecx, ebx
mov edi, dword [ebp - 0x54]
mov ebx, dword [ebp - 0x30]
mov dword [ebp - 0x30], eax
jmp 0x4043d8
test esi, esi
je 0x404fa5
add edi, 1
movzx eax, byte [edi - 1]
sub esi, 1
shl eax, cl
add ecx, 8
add edx, eax
cmp ecx, ebx
jb 0x4043d0
mov eax, dword [ebp - 0x30]
mov dword [ebp - 0x54], edi
mov ebx, ecx
mov ecx, eax
sub ebx, eax
shr edx, cl
sub ebx, 7
mov ecx, edx
and edx, 0x7f
lea edi, [edx + 0xb]
mov edx, ecx
xor ecx, ecx
shr edx, 7
mov dword [ebp - 0x30], edi
mov eax, edi
mov edi, dword [ebp - 0x50]
add eax, edi
cmp eax, dword [ebp - 0x58]
mov dword [ebp - 0x4c], eax
ja 0x405d0e
mov eax, dword [ebp - 0x2c]
add edi, 0x38
mov word [ebp - 0x6e], cx
mov dword [ebp - 0x48], edi
lea eax, [eax + edi*2]
mov edi, dword [ebp - 0x30]
shl eax, 0x1e
shr eax, 0x1f
cmp edi, eax
cmovbe eax, edi
cmp edi, 6
mov dword [ebp - 0x6c], eax
ja 0x4059d2
mov eax, dword [ebp - 0x2c]
mov edi, dword [ebp - 0x48]
cmp dword [ebp - 0x30], 2
mov word [eax + edi*2], cx
mov edi, dword [ebp - 0x50]
mov word [eax + edi*2 + 0x72], cx
je 0x40448b
cmp dword [ebp - 0x30], 3
mov word [eax + edi*2 + 0x74], cx
je 0x40448b
cmp dword [ebp - 0x30], 4
mov word [eax + edi*2 + 0x76], cx
je 0x40448b
cmp dword [ebp - 0x30], 6
mov word [eax + edi*2 + 0x78], cx
jne 0x40448b
mov word [eax + edi*2 + 0x7a], cx
mov eax, dword [ebp - 0x4c]
mov edi, dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x58]
mov dword [edi + 0x68], eax
mov dword [ebp - 0x50], eax
jmp 0x404300
cmp ebx, 0xd
ja 0x405a7a
test esi, esi
je 0x404f20
lea eax, [edi + 1]
mov ecx, ebx
lea edx, [esi - 1]
mov dword [ebp - 0x48], eax
movzx eax, byte [edi]
shl eax, cl
lea ecx, [ebx + 8]
add dword [ebp - 0x30], eax
cmp ecx, 0xd
ja 0x405a94
test edx, edx
je 0x404fe0
lea eax, [edi + 2]
sub esi, 2
add ebx, 0x10
mov dword [ebp - 0x48], eax
movzx eax, byte [edi + 1]
shl eax, cl
add dword [ebp - 0x30], eax
mov edi, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x2c]
sub ebx, 0xe
mov eax, edi
mov edx, edi
shr eax, 5
and edx, 0x1f
and eax, 0x1f
add edx, 0x101
add eax, 1
mov dword [ecx + 0x60], edx
mov dword [ecx + 0x64], eax
mov ecx, edi
mov dword [ebp - 0x4c], eax
shr ecx, 0xa
and ecx, 0xf
add ecx, 4
mov eax, ecx
mov dword [ebp - 0x50], ecx
mov ecx, dword [ebp - 0x2c]
mov dword [ecx + 0x5c], eax
mov ecx, edi
shr ecx, 0xe
cmp dword [ebp - 0x4c], 0x1e
mov dword [ebp - 0x30], ecx
ja 0x4053c0
cmp edx, 0x11e
ja 0x4053c0
mov eax, dword [ebp - 0x2c]
mov edi, dword [ebp - 0x48]
mov ecx, ebx
xor edx, edx
mov dword [ebp - 0x48], esi
mov ebx, dword [ebp - 0x30]
mov dword [eax + 0x68], 0
mov dword [eax], 0x11
mov dword [ebp - 0x4c], edi
jmp 0x40459d
mov eax, dword [ebp - 0x2c]
mov eax, dword [eax + 0x40]
jmp 0x40428f
mov eax, dword [ebp - 0x2c]
mov edx, dword [eax + 0x5c]
mov ecx, edx
mov dword [ebp - 0x50], edx
mov edx, dword [eax + 0x68]
cmp ecx, edx
jbe 0x4045f7
mov ecx, ebx
mov ebx, dword [ebp - 0x30]
mov dword [ebp - 0x4c], edi
mov dword [ebp - 0x48], esi
cmp ecx, 2
ja 0x4045c6
mov eax, dword [ebp - 0x48]
test eax, eax
je 0x4058a6
mov edi, dword [ebp - 0x4c]
sub dword [ebp - 0x48], 1
movzx eax, byte [edi]
shl eax, cl
add ecx, 8
add ebx, eax
mov eax, edi
add eax, 1
mov dword [ebp - 0x4c], eax
add edx, 1
mov eax, ebx
sub ecx, 3
and eax, 7
movzx esi, word [edx + edx + 0x40ff3e]
shr ebx, 3
cmp edx, dword [ebp - 0x50]
mov edi, dword [ebp - 0x2c]
mov dword [edi + 0x68], edx
mov word [edi + esi*2 + 0x70], ax
jb 0x40459d
mov edi, dword [ebp - 0x4c]
mov esi, dword [ebp - 0x48]
mov dword [ebp - 0x30], ebx
mov ebx, ecx
cmp edx, 0x12
lea eax, [edx + edx + 0x40ff40]
mov ecx, dword [ebp - 0x2c]
ja 0x40462e
lea esi, [esi]
lea edi, [edi]
movzx edx, word [eax]
add eax, 2
cmp eax, 0x40ff66
mov word [ecx + edx*2 + 0x70], 0
jne 0x404610
mov eax, dword [ebp - 0x2c]
mov dword [eax + 0x68], 0x13
mov eax, dword [ebp - 0x2c]
mov edx, dword [ebp - 0x64]
mov dword [eax + 0x6c], edx
mov dword [eax + 0x4c], edx
mov edx, dword [ebp - 0x60]
mov dword [eax + 0x54], 7
mov dword [esp + 8], 0x13
mov dword [esp], 0
mov dword [esp + 0x14], edx
mov edx, eax
add eax, 0x54
mov dword [esp + 0x10], eax
mov eax, edx
add eax, 0x6c
mov dword [esp + 0xc], eax
mov eax, edx
add eax, 0x70
mov dword [esp + 4], eax
call fcn.00407210
test eax, eax
mov dword [ebp - 0x44], eax
je 0x405a55
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.invalid_code_lengths_set
mov eax, dword [ebp - 0x2c]
mov dword [eax], 0x1d
mov eax, 0x1d
jmp switch.0x00403a51
mov eax, dword [ebp - 0x2c]
mov edx, dword [eax + 0x10]
mov eax, edx
and eax, 0x400
test eax, eax
je 0x404744
mov eax, dword [ebp - 0x2c]
mov eax, dword [eax + 0x40]
cmp esi, eax
mov dword [ebp - 0x48], eax
cmovbe eax, esi
mov ecx, eax
mov dword [ebp - 0x4c], eax
mov eax, dword [ebp - 0x48]
test ecx, ecx
je 0x404736
mov eax, dword [ebp - 0x2c]
mov eax, dword [eax + 0x20]
test eax, eax
je 0x404718
mov ecx, dword [eax + 0x10]
test ecx, ecx
mov dword [ebp - 0x50], ecx
je 0x404718
mov edx, dword [eax + 0x14]
sub edx, dword [ebp - 0x48]
mov ecx, dword [ebp - 0x4c]
mov eax, dword [eax + 0x18]
mov dword [esp + 4], edi
add ecx, edx
mov dword [ebp - 0x48], ecx
mov ecx, eax
sub ecx, edx
cmp dword [ebp - 0x48], eax
cmovbe ecx, dword [ebp - 0x4c]
add edx, dword [ebp - 0x50]
mov dword [esp + 8], ecx
mov dword [esp], edx
call sub.msvcrt.dll_memcpy
mov eax, dword [ebp - 0x2c]
mov edx, dword [eax + 0x10]
and dh, 2
jne 0x405733
mov ecx, dword [ebp - 0x2c]
mov edx, dword [ebp - 0x4c]
mov eax, dword [ecx + 0x40]
sub esi, edx
add edi, edx
mov dword [ebp - 0x48], eax
sub eax, edx
mov dword [ecx + 0x40], eax
test eax, eax
jne 0x404f20
mov eax, dword [ebp - 0x2c]
mov edx, dword [eax + 0x10]
mov eax, dword [ebp - 0x2c]
test dh, 8
mov dword [eax + 0x40], 0
mov dword [eax], 6
jne 0x40478b
mov ecx, dword [ebp - 0x2c]
mov eax, dword [ecx + 0x20]
test eax, eax
je 0x40480f
mov dword [eax + 0x1c], 0
mov edx, dword [ecx + 0x10]
jmp 0x40480f
mov eax, dword [ebp - 0x2c]
mov edx, dword [eax + 0x10]
test dh, 8
je 0x404759
test esi, esi
je 0x404f20
xor edx, edx
mov dword [ebp - 0x4c], edi
mov dword [ebp - 0x50], esi
mov dword [ebp - 0x54], ebx
jmp 0x4047a5
cmp edx, dword [ebp - 0x50]
jae 0x4047e1
mov eax, dword [ebp - 0x4c]
mov ebx, dword [ebp - 0x2c]
add edx, 1
movzx edi, byte [eax + edx - 1]
mov eax, dword [ebx + 0x20]
test eax, eax
mov ecx, edi
je 0x4047dd
mov esi, dword [eax + 0x1c]
test esi, esi
mov dword [ebp - 0x48], esi
je 0x4047dd
mov ebx, dword [ebx + 0x40]
cmp ebx, dword [eax + 0x20]
jae 0x4047dd
mov esi, dword [ebp - 0x2c]
lea eax, [ebx + 1]
mov dword [esi + 0x40], eax
mov eax, dword [ebp - 0x48]
mov byte [eax + ebx], cl
test edi, edi
jne 0x4047a0
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x48], edi
mov esi, dword [ebp - 0x50]
mov ebx, dword [ebp - 0x54]
mov edi, dword [ebp - 0x4c]
test byte [eax + 0x11], 2
jne 0x405470
mov eax, dword [ebp - 0x48]
sub esi, edx
add edi, edx
test eax, eax
jne 0x404f20
mov eax, dword [ebp - 0x2c]
mov edx, dword [eax + 0x10]
mov eax, dword [ebp - 0x2c]
test dh, 0x10
mov dword [eax + 0x40], 0
mov dword [eax], 7
jne 0x40484c
mov ecx, dword [ebp - 0x2c]
mov eax, dword [ecx + 0x20]
test eax, eax
je 0x4048d0
mov dword [eax + 0x24], 0
mov edx, dword [ecx + 0x10]
jmp 0x4048d0
mov eax, dword [ebp - 0x2c]
mov edx, dword [eax + 0x10]
test dh, 0x10
je 0x404824
test esi, esi
je 0x404f20
xor edx, edx
mov dword [ebp - 0x4c], edi
mov dword [ebp - 0x50], esi
mov dword [ebp - 0x54], ebx
jmp 0x404866
cmp edx, dword [ebp - 0x50]
jae 0x4048a2
mov eax, dword [ebp - 0x4c]
mov ebx, dword [ebp - 0x2c]
add edx, 1
movzx edi, byte [eax + edx - 1]
mov eax, dword [ebx + 0x20]
test eax, eax
mov ecx, edi
je 0x40489e
mov esi, dword [eax + 0x24]
test esi, esi
mov dword [ebp - 0x48], esi
je 0x40489e
mov ebx, dword [ebx + 0x40]
cmp ebx, dword [eax + 0x28]
jae 0x40489e
mov esi, dword [ebp - 0x2c]
lea eax, [ebx + 1]
mov dword [esi + 0x40], eax
mov eax, dword [ebp - 0x48]
mov byte [eax + ebx], cl
test edi, edi
jne 0x404861
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x48], edi
mov esi, dword [ebp - 0x50]
mov ebx, dword [ebp - 0x54]
mov edi, dword [ebp - 0x4c]
test byte [eax + 0x11], 2
jne 0x405404
mov eax, dword [ebp - 0x48]
sub esi, edx
add edi, edx
test eax, eax
jne 0x404f20
mov eax, dword [ebp - 0x2c]
mov edx, dword [eax + 0x10]
mov eax, dword [ebp - 0x2c]
mov dword [eax], 8
test dh, 2
je 0x404f50
cmp ebx, 0xf
ja 0x405894
test esi, esi
je 0x404f20
lea eax, [esi - 1]
lea ecx, [edi + 1]
mov dword [ebp - 0x4c], eax
movzx eax, byte [edi]
mov dword [ebp - 0x48], ecx
mov ecx, ebx
shl eax, cl
lea ecx, [ebx + 8]
add dword [ebp - 0x30], eax
cmp ecx, 0xf
ja 0x40589c
mov eax, dword [ebp - 0x4c]
test eax, eax
je 0x404fe0
lea eax, [edi + 2]
sub esi, 2
add ebx, 0x10
mov dword [ebp - 0x48], eax
movzx eax, byte [edi + 1]
shl eax, cl
add dword [ebp - 0x30], eax
mov edi, dword [ebp - 0x2c]
movzx eax, word [edi + 0x18]
cmp eax, dword [ebp - 0x30]
je 0x404f40
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.header_crc_mismatch
mov dword [edi], 0x1d
mov eax, 0x1d
mov edi, dword [ebp - 0x48]
jmp switch.0x00403a51
cmp ebx, 0xf
ja 0x4049a1
test esi, esi
je 0x404f20
mov edx, dword [ebp - 0x30]
mov ecx, ebx
jmp 0x404988
test esi, esi
je 0x404fa5
add edi, 1
movzx eax, byte [edi - 1]
sub esi, 1
shl eax, cl
add ecx, 8
add edx, eax
cmp ecx, 0xf
jbe 0x404980
mov dword [ebp - 0x30], edx
mov ecx, dword [ebp - 0x2c]
mov eax, dword [ecx + 0x20]
test eax, eax
je 0x4049bd
mov ebx, dword [ebp - 0x30]
movzx edx, bl
shr ebx, 8
mov dword [eax + 8], edx
mov eax, dword [ecx + 0x20]
mov dword [eax + 0xc], ebx
mov eax, dword [ebp - 0x2c]
mov eax, dword [eax + 0x10]
test ah, 2
mov edx, eax
jne 0x40556b
mov ebx, dword [ebp - 0x2c]
mov dword [ebp - 0x30], 0
mov dword [ebx], 4
xor ebx, ebx
test ah, 4
jne 0x403fd9
mov ecx, dword [ebp - 0x2c]
mov eax, dword [ecx + 0x20]
test eax, eax
je 0x4053b9
mov dword [eax + 0x10], 0
mov edx, dword [ecx + 0x10]
mov eax, edx
and eax, 0x400
mov ecx, dword [ebp - 0x2c]
mov dword [ecx], 5
jmp 0x4046ad
cmp ebx, 0xf
ja 0x405a73
test esi, esi
je 0x404f20
lea eax, [esi - 1]
mov ecx, ebx
lea edx, [edi + 1]
mov dword [ebp - 0x48], eax
movzx eax, byte [edi]
shl eax, cl
lea ecx, [ebx + 8]
add dword [ebp - 0x30], eax
cmp ecx, 0xf
ja 0x405a8a
mov eax, dword [ebp - 0x48]
test eax, eax
je 0x405494
movzx eax, byte [edi + 1]
lea edx, [edi + 2]
sub esi, 2
add ebx, 0x10
shl eax, cl
add dword [ebp - 0x30], eax
mov eax, dword [ebp - 0x30]
mov edi, dword [ebp - 0x2c]
cmp al, 8
mov dword [edi + 0x10], eax
je 0x405366
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.unknown_compression_method
mov dword [edi], 0x1d
mov eax, 0x1d
mov edi, edx
jmp switch.0x00403a51
mov eax, dword [ebp - 0x2c]
mov eax, dword [eax + 8]
test eax, eax
je 0x4059b6
mov eax, dword [ebp - 0x2c]
mov eax, dword [eax + 0x10]
test eax, eax
je 0x4059b6
cmp ebx, 0x1f
ja 0x404b58
test esi, esi
je 0x404f20
lea eax, [edi + 1]
mov ecx, ebx
lea edx, [esi - 1]
mov dword [ebp - 0x48], eax
movzx eax, byte [edi]
shl eax, cl
lea ecx, [ebx + 8]
add dword [ebp - 0x30], eax
cmp ecx, 0x1f
ja 0x4055b4
test edx, edx
je 0x404fe0
lea eax, [edi + 2]
lea edx, [esi - 2]
mov dword [ebp - 0x48], eax
movzx eax, byte [edi + 1]
shl eax, cl
lea ecx, [ebx + 0x10]
add dword [ebp - 0x30], eax
cmp ecx, 0x1f
ja 0x4055b4
test edx, edx
je 0x404fe0
lea eax, [edi + 3]
lea edx, [esi - 3]
mov dword [ebp - 0x48], eax
movzx eax, byte [edi + 2]
shl eax, cl
lea ecx, [ebx + 0x18]
add dword [ebp - 0x30], eax
cmp ecx, 0x1f
ja 0x4055b4
test edx, edx
je 0x404fe0
lea eax, [edi + 4]
sub esi, 4
add ebx, 0x20
mov dword [ebp - 0x48], eax
movzx eax, byte [edi + 3]
shl eax, cl
add dword [ebp - 0x30], eax
mov edi, dword [ebp - 0x48]
mov eax, dword [ebp - 0x2c]
mov edx, dword [ebp - 0x30]
cmp dword [eax + 0x1c], edx
je 0x405bb7
mov edx, dword [ebp + 8]
mov dword [edx + 0x18], str.incorrect_length_check
mov dword [eax], 0x1d
mov eax, 0x1d
jmp switch.0x00403a51
mov ecx, ebx
and ebx, 0xfffffff8
and ecx, 7
shr dword [ebp - 0x30], cl
cmp ebx, 0x1f
ja 0x405a82
test esi, esi
je 0x404f20
movzx eax, byte [edi]
lea ecx, [edi + 1]
lea edx, [esi - 1]
mov dword [ebp - 0x4c], ecx
mov ecx, ebx
shl eax, cl
lea ecx, [ebx + 8]
add dword [ebp - 0x30], eax
cmp ecx, 0x1f
ja 0x4057fa
test edx, edx
je 0x405887
lea eax, [edi + 2]
lea edx, [esi - 2]
mov dword [ebp - 0x4c], eax
movzx eax, byte [edi + 1]
shl eax, cl
lea ecx, [ebx + 0x10]
add dword [ebp - 0x30], eax
cmp ecx, 0x1f
ja 0x4057fa
test edx, edx
je 0x405887
lea eax, [edi + 3]
lea edx, [esi - 3]
mov dword [ebp - 0x4c], eax
movzx eax, byte [edi + 2]
shl eax, cl
lea ecx, [ebx + 0x18]
add dword [ebp - 0x30], eax
cmp ecx, 0x1f
ja 0x4057fa
test edx, edx
je 0x405887
lea eax, [edi + 4]
sub esi, 4
add ebx, 0x20
mov dword [ebp - 0x4c], eax
movzx eax, byte [edi + 3]
shl eax, cl
add dword [ebp - 0x30], eax
mov edx, dword [ebp - 0x30]
movzx eax, dx
shr edx, 0x10
xor edx, 0xffff
cmp eax, edx
je 0x405392
mov eax, dword [ebp + 8]
mov edi, dword [ebp - 0x4c]
mov dword [eax + 0x18], str.invalid_stored_block_lengths
mov eax, dword [ebp - 0x2c]
mov dword [eax], 0x1d
mov eax, 0x1d
jmp switch.0x00403a51
mov dword [ebp - 0x48], esi
mov dword [ebp - 0x44], 0xfffffffd
mov esi, ebx
mov ebx, edi
mov edi, dword [ebp - 0x2c]
jmp 0x404071
mov eax, dword [ebp - 0x2c]
mov edx, dword [eax + 8]
test edx, edx
je 0x4052a0
cmp ebx, 0xf
ja 0x404ce0
test esi, esi
je 0x404f20
lea eax, [esi - 1]
lea ecx, [edi + 1]
mov dword [ebp - 0x4c], eax
movzx eax, byte [edi]
mov dword [ebp - 0x48], ecx
mov ecx, ebx
shl eax, cl
lea ecx, [ebx + 8]
add dword [ebp - 0x30], eax
cmp ecx, 0xf
ja 0x405b50
mov eax, dword [ebp - 0x4c]
test eax, eax
je 0x404fe0
lea eax, [edi + 2]
sub esi, 2
add ebx, 0x10
mov dword [ebp - 0x48], eax
movzx eax, byte [edi + 1]
shl eax, cl
add dword [ebp - 0x30], eax
mov edi, dword [ebp - 0x48]
cmp dword [ebp - 0x30], 0x8b1f
jne 0x404cf2
test dl, 2
jne 0x405b5a
mov ecx, dword [ebp - 0x2c]
mov eax, dword [ecx + 0x20]
mov dword [ecx + 0x10], 0
test eax, eax
je 0x404d0d
mov dword [eax + 0x30], 0xffffffff
mov edx, dword [ecx + 8]
and edx, 1
je 0x4056c0
mov ecx, dword [ebp - 0x30]
mov edx, 0x8421085
mov eax, ecx
shr ecx, 8
shl eax, 8
movzx eax, ax
add ecx, eax
mov eax, ecx
mul edx
mov eax, ecx
sub eax, edx
shr eax, 1
add eax, edx
shr eax, 4
mov edx, eax
shl edx, 5
sub edx, eax
cmp ecx, edx
jne 0x4056c0
mov eax, dword [ebp - 0x30]
and eax, 0xf
cmp eax, 8
je 0x405bcd
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.unknown_compression_method
mov eax, dword [ebp - 0x2c]
mov dword [eax], 0x1d
mov eax, 0x1d
jmp switch.0x00403a51
mov eax, dword [ebp - 0x2c]
mov edx, dword [eax + 0x10]
jmp 0x4048d9
mov edx, dword [ebp - 0x40]
test edx, edx
je 0x404f20
mov eax, dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x38]
mov eax, dword [eax + 0x40]
mov byte [ecx], al
mov eax, edx
sub eax, 1
mov dword [ebp - 0x40], eax
mov eax, dword [ebp - 0x2c]
mov dword [eax], 0x14
lea eax, [ecx + 1]
mov dword [ebp - 0x38], eax
mov eax, 0x14
jmp switch.0x00403a51
mov eax, dword [ebp - 0x2c]
mov eax, dword [eax + 8]
test eax, eax
je 0x405290
cmp ebx, 0x1f
ja 0x405b48
test esi, esi
je 0x404f20
lea eax, [edi + 1]
mov ecx, ebx
lea edx, [esi - 1]
mov dword [ebp - 0x48], eax
movzx eax, byte [edi]
shl eax, cl
lea ecx, [ebx + 8]
add dword [ebp - 0x30], eax
cmp ecx, 0x1f
ja 0x405a4c
test edx, edx
je 0x404fe0
lea eax, [edi + 2]
lea edx, [esi - 2]
mov dword [ebp - 0x48], eax
movzx eax, byte [edi + 1]
shl eax, cl
lea ecx, [ebx + 0x10]
add dword [ebp - 0x30], eax
cmp ecx, 0x1f
ja 0x405a4c
test edx, edx
je 0x404fe0
lea eax, [edi + 3]
lea edx, [esi - 3]
mov dword [ebp - 0x48], eax
movzx eax, byte [edi + 2]
shl eax, cl
lea ecx, [ebx + 0x18]
add dword [ebp - 0x30], eax
cmp ecx, 0x1f
ja 0x405a4c
test edx, edx
je 0x404fe0
lea eax, [edi + 4]
sub esi, 4
add ebx, 0x20
mov dword [ebp - 0x48], eax
movzx eax, byte [edi + 3]
shl eax, cl
add dword [ebp - 0x30], eax
mov edi, dword [ebp + 8]
mov eax, dword [ebp - 0x34]
sub eax, dword [ebp - 0x40]
add dword [edi + 0x14], eax
mov edi, dword [ebp - 0x2c]
add dword [edi + 0x1c], eax
test eax, eax
je 0x404eb2
mov ecx, dword [edi + 0x10]
mov dword [esp + 8], eax
mov edi, dword [ebp - 0x38]
test ecx, ecx
je 0x40599d
sub edi, eax
mov eax, dword [ebp - 0x2c]
mov dword [esp + 4], edi
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call fcn.00406ed0
mov edi, dword [ebp - 0x2c]
mov dword [edi + 0x18], eax
mov edi, dword [ebp + 8]
mov dword [edi + 0x30], eax
mov edi, dword [ebp - 0x2c]
mov edx, dword [edi + 0x10]
mov eax, dword [ebp - 0x30]
test edx, edx
jne 0x404ee5
mov edx, eax
mov edi, eax
shr eax, 0x18
shl edx, 0x18
lea ecx, [edx + eax]
mov eax, edi
shr eax, 8
and eax, 0xff00
lea edx, [ecx + eax]
mov eax, edi
mov edi, dword [ebp - 0x2c]
and eax, 0xff00
shl eax, 8
add eax, edx
cmp eax, dword [edi + 0x18]
je 0x405273
mov eax, dword [ebp + 8]
mov edi, dword [ebp - 0x48]
mov dword [eax + 0x18], str.incorrect_data_check
mov eax, dword [ebp - 0x2c]
mov dword [eax], 0x1d
mov eax, dword [ebp - 0x40]
mov dword [ebp - 0x34], eax
mov eax, 0x1d
jmp switch.0x00403a51
mov edx, 0x100
jmp 0x4041dd
mov dword [ebp - 0x48], esi
mov esi, ebx
mov ebx, edi
mov edi, dword [ebp - 0x2c]
jmp 0x404071
sub eax, 0xffffff80
jmp 0x4041db
mov edi, dword [ebp - 0x48]
xor ebx, ebx
mov dword [ebp - 0x30], 0
lea esi, [esi]
mov ecx, dword [ebp - 0x2c]
mov eax, dword [ecx + 0x20]
test eax, eax
je 0x404f6d
sar edx, 9
and edx, 1
mov dword [eax + 0x2c], edx
mov eax, dword [ecx + 0x20]
mov dword [eax + 0x30], 1
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.00406ed0
mov edx, dword [ebp - 0x2c]
mov ecx, dword [ebp + 8]
mov dword [edx + 0x18], eax
mov dword [ecx + 0x30], eax
mov eax, 0xb
mov dword [edx], 0xb
jmp switch.0x00403a51
mov ebx, edi
mov dword [ebp - 0x48], esi
mov dword [ebp - 0x30], edx
mov esi, ecx
mov edi, dword [ebp - 0x2c]
jmp 0x404071
mov eax, dword [eax + 4]
test eax, eax
je 0x4039ea
nop
lea esi, [esi]
mov eax, 0xfffffffe
jmp 0x404055
mov edi, dword [ebp - 0x2c]
mov ebx, dword [ebp - 0x48]
mov esi, ecx
mov dword [ebp - 0x48], 0
jmp 0x404071
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0xc]
mov dword [ebp - 0x2c], eax
sub eax, ebx
mov dword [esp + 4], eax
mov eax, dword [edi + 0x18]
mov dword [esp], eax
call fcn.00406700
jmp 0x4041a7
mov edx, dword [ebp - 0x2c]
mov dword [esp + 8], ebx
mov dword [esp], eax
sub edx, ebx
mov dword [esp + 4], edx
call sub.msvcrt.dll_memcpy
mov eax, dword [esi + 0x28]
mov dword [esi + 0x30], 0
mov dword [esi + 0x2c], eax
jmp 0x404157
mov dword [esi + 0x30], 0
jmp 0x40414b
mov edx, dword [ebp - 0x2c]
mov eax, dword [esi + 0x34]
mov dword [esp + 8], ecx
mov dword [ebp - 0x2c], ecx
sub edx, ecx
mov dword [esp], eax
mov dword [esp + 4], edx
call sub.msvcrt.dll_memcpy
mov ecx, dword [ebp - 0x2c]
mov eax, dword [esi + 0x28]
mov dword [esi + 0x30], ecx
mov dword [esi + 0x2c], eax
jmp 0x404157
mov eax, dword [ebp - 0x2c]
mov dword [eax], 0xb
mov eax, 0xb
jmp switch.0x00403a51
mov eax, dword [ebp - 0x38]
sub eax, edx
mov dword [ebp - 0x48], eax
mov eax, dword [ebp - 0x2c]
mov ecx, dword [eax + 0x40]
mov edx, ecx
mov eax, dword [ebp - 0x40]
cmp ecx, eax
cmova ecx, eax
sub eax, ecx
sub edx, ecx
mov dword [ebp - 0x4c], ecx
mov dword [ebp - 0x40], eax
mov eax, dword [ebp - 0x2c]
mov dword [eax + 0x40], edx
mov eax, dword [ebp - 0x48]
lea edx, [eax + 4]
mov eax, dword [ebp - 0x38]
cmp eax, edx
mov edx, eax
setae cl
add edx, 4
cmp dword [ebp - 0x48], edx
setae dl
or edx, ecx
cmp dword [ebp - 0x4c], 9
seta cl
test dl, cl
je 0x405540
mov edx, dword [ebp - 0x48]
or edx, eax
and edx, 3
jne 0x405540
mov ecx, dword [ebp - 0x4c]
mov dword [ebp - 0x54], ebx
xor edx, edx
mov ebx, dword [ebp - 0x38]
mov dword [ebp - 0x50], esi
sub ecx, 4
shr ecx, 2
add ecx, 1
lea eax, [ecx*4]
mov dword [ebp - 0x58], eax
mov eax, dword [ebp - 0x48]
mov esi, dword [eax + edx*4]
mov dword [ebx + edx*4], esi
add edx, 1
cmp edx, ecx
jb 0x405117
mov ecx, dword [ebp - 0x58]
mov dword [ebp - 0x48], eax
mov eax, dword [ebp - 0x4c]
mov esi, dword [ebp - 0x50]
mov edx, dword [ebp - 0x38]
mov ebx, dword [ebp - 0x54]
sub eax, ecx
mov dword [ebp - 0x50], eax
mov eax, dword [ebp - 0x48]
add edx, ecx
add eax, ecx
cmp ecx, dword [ebp - 0x4c]
je 0x405166
movzx ecx, byte [eax]
cmp dword [ebp - 0x50], 1
mov byte [edx], cl
je 0x405166
movzx ecx, byte [eax + 1]
cmp dword [ebp - 0x50], 2
mov byte [edx + 1], cl
je 0x405166
movzx eax, byte [eax + 2]
mov byte [edx + 2], al
mov eax, dword [ebp - 0x2c]
mov edx, dword [ebp - 0x4c]
add dword [ebp - 0x38], edx
mov edx, dword [eax + 0x40]
test edx, edx
je 0x405180
mov eax, dword [eax]
jmp 0x403a48
mov dword [eax], 0x14
mov eax, 0x14
jmp switch.0x00403a51
mov eax, dword [ebp + 8]
mov edx, dword [ebp - 0x38]
mov dword [eax + 0xc], edx
mov edx, dword [ebp - 0x40]
mov dword [eax], edi
mov dword [eax + 4], esi
mov esi, dword [ebp - 0x30]
mov dword [eax + 0x10], edx
mov eax, dword [ebp - 0x2c]
mov dword [eax + 0x38], esi
mov esi, dword [ebp - 0x34]
mov dword [eax + 0x3c], ebx
mov dword [esp + 4], esi
mov esi, dword [ebp + 8]
mov dword [esp], esi
call fcn.00407d00
mov esi, dword [ebp + 8]
mov eax, dword [ebp - 0x2c]
mov esi, dword [esi + 0xc]
mov ebx, dword [eax + 0x38]
mov dword [ebp - 0x38], esi
mov esi, dword [ebp + 8]
mov dword [ebp - 0x30], ebx
mov ebx, dword [eax + 0x3c]
mov eax, dword [eax]
mov esi, dword [esi + 0x10]
cmp eax, 0xb
mov dword [ebp - 0x40], esi
mov esi, dword [ebp + 8]
mov edi, dword [esi]
mov esi, dword [esi + 4]
jne 0x403a48
mov edx, dword [ebp - 0x2c]
mov dword [edx + 0x1bc4], 0xffffffff
jmp switch.0x00403a51
cmp ebx, edx
jae 0x405244
test esi, esi
je 0x404f20
mov ecx, ebx
mov ebx, edx
mov edx, dword [ebp - 0x30]
jmp 0x405228
test esi, esi
je 0x404fa5
add edi, 1
movzx eax, byte [edi - 1]
sub esi, 1
shl eax, cl
add ecx, 8
add edx, eax
cmp ecx, ebx
jb 0x405220
mov dword [ebp - 0x30], edx
mov edx, ebx
mov ebx, ecx
mov ecx, edx
mov eax, 1
sub ebx, edx
shl eax, cl
mov ecx, dword [ebp - 0x2c]
sub eax, 1
and eax, dword [ebp - 0x30]
add eax, dword [ecx + 0x40]
mov dword [ecx + 0x40], eax
mov ecx, edx
shr dword [ebp - 0x30], cl
mov ecx, dword [ebp - 0x2c]
add dword [ecx + 0x1bc4], edx
mov edx, ecx
jmp 0x403e2a
mov eax, dword [edi + 8]
mov edi, dword [ebp - 0x40]
xor ebx, ebx
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x34], edi
mov edi, dword [ebp - 0x48]
nop
lea esi, [esi]
mov edx, dword [ebp - 0x2c]
mov dword [edx], 0x1b
jmp 0x404aa6
mov dword [eax], 0xc
mov eax, 0xc
jmp switch.0x00403a51
mov eax, dword [eax + 0x1bc0]
test eax, eax
je 0x403ce0
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], 0x40f5c5
mov eax, dword [ebp - 0x2c]
mov dword [eax], 0x1d
mov eax, 0x1d
jmp switch.0x00403a51
mov edx, dword [ebp - 0x2c]
mov dword [ebp - 0x6c], eax
mov edx, dword [edx + 0x1bc4]
mov dword [ebp - 0x50], edx
add edx, eax
mov ecx, eax
sub ebx, dword [ebp - 0x54]
shr dword [ebp - 0x30], cl
test byte [ebp - 0x48], 0x40
mov eax, dword [ebp - 0x2c]
mov dword [eax + 0x1bc4], edx
je 0x405520
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], 0x40f5af
mov eax, dword [ebp - 0x2c]
mov dword [eax], 0x1d
mov eax, 0x1d
jmp switch.0x00403a51
shr edx, cl
mov ecx, dword [ebp - 0x50]
mov edi, dword [ebp - 0x2c]
sub ebx, eax
mov eax, ecx
add eax, 1
mov dword [edi + 0x68], eax
mov dword [ebp - 0x50], eax
movzx eax, word [ebp - 0x30]
mov word [edi + ecx*2 + 0x70], ax
mov ecx, dword [ebp - 0x58]
jmp 0x404300
mov dword [edi], 0x10
mov eax, 0x10
jmp 0x403bf0
test dword [ebp - 0x30], 0xe000
je 0x405965
mov eax, dword [ebp + 8]
mov edi, edx
mov dword [eax + 0x18], str.unknown_header_flags_set
mov eax, dword [ebp - 0x2c]
mov dword [eax], 0x1d
mov eax, 0x1d
jmp switch.0x00403a51
cmp dword [ebp + 0xc], 6
mov edi, dword [ebp - 0x2c]
mov dword [edi + 0x40], eax
mov dword [edi], 0xe
je 0x405cf7
mov edi, dword [ebp - 0x4c]
xor ebx, ebx
mov dword [ebp - 0x30], 0
jmp 0x404286
xor eax, eax
jmp 0x404a08
mov eax, dword [ebp + 8]
mov edi, dword [ebp - 0x48]
mov dword [eax + 0x18], str.too_many_length_or_distance_symbols
mov eax, dword [ebp - 0x2c]
mov dword [eax], 0x1d
mov eax, 0x1d
jmp switch.0x00403a51
mov dword [ebp - 0x48], ebx
mov dword [ebp - 0x30], edi
mov ebx, esi
mov edi, dword [ebp - 0x2c]
mov esi, ecx
jmp 0x404071
mov dword [ebp - 0x48], ebx
mov dword [ebp - 0x30], esi
mov ebx, edi
mov esi, ecx
mov edi, dword [ebp - 0x2c]
jmp 0x404071
mov dword [esp + 8], edx
mov dword [esp + 4], edi
mov eax, dword [eax + 0x18]
mov dword [ebp - 0x4c], edx
mov dword [esp], eax
call fcn.00406ed0
mov edx, dword [ebp - 0x2c]
mov dword [edx + 0x18], eax
mov edx, dword [ebp - 0x4c]
jmp 0x4048bb
mov dword [esp + 8], 1
mov ecx, dword [esi + 0x24]
mov al, 1
mov dword [ebp - 0x30], edx
shl eax, cl
mov dword [esp + 4], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x28]
mov dword [esp], eax
mov eax, dword [ebp + 8]
call dword [eax + 0x20]
test eax, eax
mov dword [esi + 0x34], eax
je 0x404046
mov edx, dword [ebp - 0x30]
jmp 0x4040e0
mov dword [esp + 8], edx
mov dword [esp + 4], edi
mov eax, dword [eax + 0x18]
mov dword [ebp - 0x4c], edx
mov dword [esp], eax
call fcn.00406ed0
mov edx, dword [ebp - 0x2c]
mov dword [edx + 0x18], eax
mov edx, dword [ebp - 0x4c]
jmp 0x4047fa
mov edi, dword [ebp - 0x2c]
mov esi, ecx
mov ebx, edx
mov dword [ebp - 0x48], 0
jmp 0x404071
mov dword [ebp - 0x48], esi
mov dword [ebp - 0x30], ebx
mov esi, ecx
mov ebx, edi
mov edi, dword [ebp - 0x2c]
jmp 0x404071
mov edx, dword [ebp - 0x2c]
sub eax, ecx
add eax, dword [edx + 0x34]
mov dword [ebp - 0x48], eax
mov eax, edx
jmp 0x403d00
test byte [ebp - 0x48], 0xf0
je 0x4055bd
movzx eax, word [ebp - 0x50]
mov ecx, edx
mov edx, dword [ebp - 0x2c]
shr dword [ebp - 0x30], cl
mov ecx, dword [ebp - 0x58]
mov dword [edx + 0x40], eax
sub ebx, ecx
mov dword [edx + 0x1bc4], ecx
test byte [ebp - 0x48], 0x20
je 0x40579d
mov eax, dword [ebp - 0x2c]
mov dword [eax + 0x1bc4], 0xffffffff
mov dword [eax], 0xb
mov eax, 0xb
jmp switch.0x00403a51
mov ecx, eax
mov edx, dword [ebp - 0x48]
movzx eax, word [ebp - 0x4c]
mov dword [ecx], 0x17
and edx, 0xf
mov dword [ecx + 0x44], eax
mov dword [ecx + 0x48], edx
jmp 0x403c46
mov eax, dword [ebp - 0x4c]
mov edx, dword [ebp - 0x48]
mov dword [ebp - 0x50], ebx
lea ecx, [edx + eax]
mov edx, dword [ebp - 0x38]
mov eax, dword [ebp - 0x48]
add eax, 1
movzx ebx, byte [eax - 1]
add edx, 1
cmp eax, ecx
mov byte [edx - 1], bl
jne 0x405552
mov ebx, dword [ebp - 0x50]
jmp 0x405166
mov ebx, dword [ebp - 0x30]
mov dword [esp + 8], 2
mov eax, ebx
mov byte [ebp - 0x1c], bl
mov ebx, dword [ebp - 0x2c]
shr eax, 8
mov byte [ebp - 0x1b], al
lea eax, [ebp - 0x1c]
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x18]
mov dword [esp], eax
call fcn.00406ed0
mov dword [ebx + 0x18], eax
mov eax, dword [ebx + 0x10]
mov edx, eax
jmp 0x4049ce
mov eax, ebx
mov dword [ebp - 0x48], edi
mov ebx, esi
mov edi, dword [ebp - 0x2c]
mov esi, eax
jmp 0x404071
mov ebx, ecx
mov esi, edx
jmp 0x404b55
movzx eax, word [ebp - 0x50]
movzx ecx, byte [ebp - 0x48]
add cl, byte [ebp - 0x58]
mov dword [ebp - 0x50], eax
mov eax, 1
shl eax, cl
mov ecx, eax
sub ecx, 1
mov dword [ebp - 0x68], ecx
and ecx, dword [ebp - 0x30]
mov eax, ecx
mov ecx, edx
mov edx, dword [ebp - 0x50]
shr eax, cl
add edx, eax
mov eax, dword [ebp - 0x4c]
lea edx, [eax + edx*4]
movzx eax, word [edx + 2]
movzx ecx, byte [edx]
movzx edx, byte [edx + 1]
mov word [ebp - 0x54], ax
mov eax, dword [ebp - 0x58]
mov byte [ebp - 0x48], cl
add eax, edx
cmp ebx, eax
mov dword [ebp - 0x6c], eax
jae 0x405678
test esi, esi
je 0x404f20
mov edx, esi
mov eax, dword [ebp - 0x30]
mov esi, edi
mov edi, edx
jmp 0x405628
test edi, edi
je 0x405933
add esi, 1
movzx edx, byte [esi - 1]
mov ecx, ebx
add ebx, 8
sub edi, 1
shl edx, cl
movzx ecx, byte [ebp - 0x58]
add eax, edx
mov edx, dword [ebp - 0x68]
and edx, eax
shr edx, cl
add edx, dword [ebp - 0x50]
mov ecx, dword [ebp - 0x4c]
lea edx, [ecx + edx*4]
movzx ecx, byte [edx]
mov byte [ebp - 0x48], cl
movzx ecx, word [edx + 2]
movzx edx, byte [edx + 1]
mov word [ebp - 0x54], cx
mov ecx, dword [ebp - 0x58]
add ecx, edx
cmp ecx, ebx
ja 0x405620
mov dword [ebp - 0x4c], edi
mov edi, esi
mov esi, dword [ebp - 0x4c]
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x6c], ecx
movzx ecx, byte [ebp - 0x58]
mov eax, dword [ebp - 0x30]
shr eax, cl
mov ecx, eax
mov eax, ebx
sub eax, dword [ebp - 0x58]
mov ebx, ecx
mov ecx, edx
shr ebx, cl
mov ecx, dword [ebp - 0x6c]
mov dword [ebp - 0x30], ebx
sub eax, edx
cmp byte [ebp - 0x48], 0
mov edx, dword [ebp - 0x2c]
mov ebx, eax
movzx eax, word [ebp - 0x54]
mov dword [edx + 0x1bc4], ecx
mov dword [edx + 0x40], eax
jne 0x4054f8
jmp 0x403e00
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.incorrect_header_check
mov eax, dword [ebp - 0x2c]
mov dword [eax], 0x1d
mov eax, 0x1d
jmp switch.0x00403a51
cmp dword [ebp + 0xc], 6
mov eax, dword [ebp - 0x2c]
mov dword [eax + 0x4c], 0x40f740
mov dword [eax + 0x54], 9
mov dword [eax + 0x50], 0x40f6c0
mov dword [eax + 0x58], 5
mov dword [eax], 0x13
je 0x405ce2
mov eax, 0x13
jmp 0x403bf0
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.invalid_block_type
mov eax, dword [ebp - 0x2c]
mov dword [eax], 0x1d
mov eax, 0x1d
jmp 0x403bf0
mov eax, dword [ebp - 0x4c]
mov dword [esp + 4], edi
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x2c]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call fcn.00406ed0
mov edx, dword [ebp - 0x2c]
mov dword [edx + 0x18], eax
jmp 0x404721
mov ebx, dword [ebp - 0x30]
mov dword [esp + 8], 4
mov eax, ebx
mov byte [ebp - 0x1c], bl
shr eax, 8
mov byte [ebp - 0x1b], al
mov eax, ebx
shr eax, 0x10
mov byte [ebp - 0x1a], al
mov eax, ebx
mov ebx, dword [ebp - 0x2c]
shr eax, 0x18
mov byte [ebp - 0x19], al
lea eax, [ebp - 0x1c]
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x18]
invalid
invalid