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

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0xac
cmp dword [ebp + 8], 0
je case.default.0x403cc4
mov edx, dword [ebp + 8]
mov eax, dword [edx + 0x1c]
test eax, eax
je case.default.0x403cc4
cmp dword [edx + 0xc], 0
je case.default.0x403cc4
cmp dword [edx], 0
jne 0x403c1a
cmp dword [edx + 4], 0
jne case.default.0x403cc4
mov dword [ebp - 0x2c], eax
cmp dword [eax], 0xb
jne 0x403c28
mov dword [eax], 0xc
mov ecx, dword [ebp + 8]
mov ecx, dword [ecx + 0xc]
mov dword [ebp - 0x5c], ecx
mov ebx, dword [ebp + 8]
mov ebx, dword [ebx + 0x10]
mov dword [ebp - 0x44], ebx
mov esi, dword [ebp + 8]
mov esi, dword [esi]
mov dword [ebp - 0x3c], esi
mov edi, dword [ebp + 8]
mov edi, dword [edi + 4]
mov dword [ebp - 0x58], edi
mov eax, dword [ebp - 0x2c]
mov eax, dword [eax + 0x38]
mov dword [ebp - 0x30], eax
mov edx, dword [ebp - 0x2c]
mov edx, dword [edx + 0x3c]
mov dword [ebp - 0x38], edx
mov ecx, dword [ebp - 0x2c]
add ecx, 0x530
mov dword [ebp - 0x60], ecx
mov ebx, dword [ebp - 0x2c]
add ebx, 0x2f0
mov dword [ebp - 0x68], ebx
mov esi, dword [ebp - 0x2c]
add esi, 0x54
mov dword [ebp - 0x74], esi
mov edi, dword [ebp - 0x2c]
add edi, 0x6c
mov dword [ebp - 0x64], edi
mov eax, dword [ebp - 0x2c]
add eax, 0x70
mov dword [ebp - 0x70], eax
mov edx, dword [ebp - 0x2c]
add edx, 0x58
mov dword [ebp - 0x78], edx
mov ecx, dword [ebp - 0x44]
mov dword [ebp - 0x54], ecx
mov ebx, dword [ebp - 0x58]
mov dword [ebp - 0x34], ebx
mov ebx, 0
mov esi, dword [ebp + 0xc]
sub esi, 5
mov dword [ebp - 0x6c], esi
mov dword [ebp - 0x50], ebx
mov edi, dword [ebp - 0x2c]
cmp dword [edi], 0x1e
ja case.default.0x403cc4
mov eax, dword [edi]
jmp dword [eax*4 + 0x409a30]
mov ebx, 1
jmp 0x4057c2
mov ebx, 0xfffffffc
jmp 0x4058ed
cmp dword [ebp - 0x38], 0xd
ja 0x404847
cmp dword [ebp - 0x34], 0
jne 0x40481e
mov ebx, dword [ebp - 0x50]
jmp 0x4057c2
cmp dword [ebp - 0x38], 0x1f
ja 0x404534
cmp dword [ebp - 0x34], 0
jne 0x40450e
mov ebx, dword [ebp - 0x50]
jmp 0x4057c2
cmp dword [ebp - 0x38], 0xf
ja 0x403f4f
cmp dword [ebp - 0x34], 0
jne 0x403f26
mov ebx, dword [ebp - 0x50]
jmp 0x4057c2
mov eax, dword [ebp - 0x2c]
mov edx, dword [eax + 8]
test edx, edx
je 0x403d51
cmp dword [ebp - 0x38], 0xf
ja 0x403d95
cmp dword [ebp - 0x34], 0
jne 0x403d68
mov ebx, dword [ebp - 0x50]
jmp 0x4057c2
mov edx, dword [ebp - 0x2c]
mov dword [edx], 0xc
jmp 0x403cb6
test edx, edx
jne 0x403d76
jmp 0x4055da
mov esi, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x38]
mov eax, dword [ebp - 0x3c]
mov ebx, edx
mov edx, dword [ebp - 0x34]
dec edx
movzx edi, byte [eax]
shl edi, cl
add esi, edi
inc eax
add ecx, 8
cmp ecx, 0xf
jbe 0x403d5f
mov dword [ebp - 0x30], esi
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x34], edx
mov dword [ebp - 0x3c], eax
mov edx, ebx
test dl, 2
je 0x403e06
cmp dword [ebp - 0x30], 0x8b1f
jne 0x403e06
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.0040648e
mov ecx, dword [ebp - 0x2c]
mov dword [ecx + 0x18], eax
mov byte [ebp - 0x1c], 0x1f
mov byte [ebp - 0x1b], 0x8b
mov dword [esp + 8], 2
lea ebx, [ebp - 0x1c]
mov dword [esp + 4], ebx
mov eax, dword [ecx + 0x18]
mov dword [esp], eax
call fcn.0040648e
mov esi, dword [ebp - 0x2c]
mov dword [esi + 0x18], eax
mov dword [esi], 1
mov dword [ebp - 0x38], 0
mov dword [ebp - 0x30], 0
jmp 0x403cb6
mov edi, dword [ebp - 0x2c]
mov dword [edi + 0x10], 0
mov eax, dword [edi + 0x20]
test eax, eax
je 0x403e1e
mov dword [eax + 0x30], 0xffffffff
mov eax, dword [ebp - 0x2c]
test byte [eax + 8], 1
je 0x403e4c
mov eax, dword [ebp - 0x30]
shl eax, 8
and eax, 0xffff
mov edx, dword [ebp - 0x30]
shr edx, 8
add eax, edx
mov edx, 0x1f
mov ecx, edx
mov edx, 0
div ecx
test edx, edx
je 0x403e64
mov ebx, dword [ebp + 8]
mov dword [ebx + 0x18], str.incorrect_header_check
mov esi, dword [ebp - 0x2c]
mov dword [esi], 0x1d
jmp 0x403cb6
mov eax, dword [ebp - 0x30]
and eax, 0xf
cmp eax, 8
je 0x403e87
mov edi, dword [ebp + 8]
mov dword [edi + 0x18], str.unknown_compression_method
mov eax, dword [ebp - 0x2c]
mov dword [eax], 0x1d
jmp 0x403cb6
shr dword [ebp - 0x30], 4
mov ecx, dword [ebp - 0x30]
and ecx, 0xf
add ecx, 8
mov edx, dword [ebp - 0x2c]
mov eax, dword [edx + 0x24]
test eax, eax
jne 0x403ea3
mov dword [edx + 0x24], ecx
jmp 0x403ec3
cmp ecx, eax
jbe 0x403ec3
sub dword [ebp - 0x38], 4
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x18], str.invalid_window_size
mov ebx, dword [ebp - 0x2c]
mov dword [ebx], 0x1d
jmp 0x403cb6
mov esi, 1
shl esi, cl
mov edi, dword [ebp - 0x2c]
mov dword [edi + 0x14], esi
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.0040689c
mov dword [edi + 0x18], eax
mov edx, dword [ebp + 8]
mov dword [edx + 0x30], eax
mov eax, dword [ebp - 0x30]
and eax, 0x200
cmp eax, 1
sbb eax, eax
and eax, 2
add eax, 9
mov dword [edi], eax
mov dword [ebp - 0x38], 0
mov dword [ebp - 0x30], 0
jmp 0x403cb6
test eax, eax
jne 0x403f32
jmp 0x4055ee
mov esi, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x38]
mov eax, dword [ebp - 0x34]
mov edx, dword [ebp - 0x3c]
dec eax
movzx edi, byte [edx]
shl edi, cl
add esi, edi
inc edx
add ecx, 8
cmp ecx, 0xf
jbe 0x403f1d
mov dword [ebp - 0x30], esi
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x3c], edx
mov eax, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x2c]
mov dword [ecx + 0x10], eax
cmp byte [ebp - 0x30], 8
je 0x403f73
mov ebx, dword [ebp + 8]
mov dword [ebx + 0x18], str.unknown_compression_method
mov dword [ecx], 0x1d
jmp 0x403cb6
test ax, 0xe000
je 0x403f91
mov esi, dword [ebp + 8]
mov dword [esi + 0x18], str.unknown_header_flags_set
mov edi, dword [ebp - 0x2c]
mov dword [edi], 0x1d
jmp 0x403cb6
mov edx, dword [ebp - 0x2c]
mov eax, dword [edx + 0x20]
test eax, eax
je 0x403fa6
mov edx, dword [ebp - 0x30]
shr edx, 8
and edx, 1
mov dword [eax], edx
mov ecx, dword [ebp - 0x2c]
test byte [ecx + 0x11], 2
je 0x403fde
mov bl, byte [ebp - 0x30]
mov byte [ebp - 0x1c], bl
mov eax, dword [ebp - 0x30]
shr eax, 8
mov byte [ebp - 0x1b], al
mov dword [esp + 8], 2
lea esi, [ebp - 0x1c]
mov dword [esp + 4], esi
mov eax, dword [ecx + 0x18]
mov dword [esp], eax
call fcn.0040648e
mov edi, dword [ebp - 0x2c]
mov dword [edi + 0x18], eax
mov eax, dword [ebp - 0x2c]
mov dword [eax], 2
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x38], 0
jmp 0x403ffd
cmp dword [ebp - 0x38], 0x1f
ja 0x40403a
cmp dword [ebp - 0x34], 0
jne 0x404014
mov ebx, dword [ebp - 0x50]
jmp 0x4057c2
test edx, edx
jne 0x404020
jmp 0x405602
mov esi, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x38]
mov edx, dword [ebp - 0x34]
mov eax, dword [ebp - 0x3c]
dec edx
movzx edi, byte [eax]
shl edi, cl
add esi, edi
inc eax
add ecx, 8
cmp ecx, 0x1f
jbe 0x40400b
mov dword [ebp - 0x30], esi
mov dword [ebp - 0x34], edx
mov dword [ebp - 0x3c], eax
mov edx, dword [ebp - 0x2c]
mov eax, dword [edx + 0x20]
test eax, eax
je 0x40404a
mov ecx, dword [ebp - 0x30]
mov dword [eax + 4], ecx
mov ebx, dword [ebp - 0x2c]
test byte [ebx + 0x11], 2
je 0x404091
mov al, byte [ebp - 0x30]
mov byte [ebp - 0x1c], al
mov eax, dword [ebp - 0x30]
shr eax, 8
mov byte [ebp - 0x1b], al
mov eax, dword [ebp - 0x30]
shr eax, 0x10
mov byte [ebp - 0x1a], al
mov eax, dword [ebp - 0x30]
shr eax, 0x18
mov byte [ebp - 0x19], al
mov dword [esp + 8], 4
lea edx, [ebp - 0x1c]
mov dword [esp + 4], edx
mov eax, dword [ebx + 0x18]
mov dword [esp], eax
call fcn.0040648e
mov dword [ebx + 0x18], eax
mov ecx, dword [ebp - 0x2c]
mov dword [ecx], 3
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x38], 0
jmp 0x4040b0
cmp dword [ebp - 0x38], 0xf
ja 0x4040ed
cmp dword [ebp - 0x34], 0
jne 0x4040c7
mov ebx, dword [ebp - 0x50]
jmp 0x4057c2
test edx, edx
jne 0x4040d3
jmp 0x405616
mov esi, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x38]
mov edx, dword [ebp - 0x34]
mov eax, dword [ebp - 0x3c]
dec edx
movzx edi, byte [eax]
shl edi, cl
add esi, edi
inc eax
add ecx, 8
cmp ecx, 0xf
jbe 0x4040be
mov dword [ebp - 0x30], esi
mov dword [ebp - 0x34], edx
mov dword [ebp - 0x3c], eax
mov ebx, dword [ebp - 0x2c]
mov eax, dword [ebx + 0x20]
test eax, eax
je 0x40410a
movzx edx, byte [ebp - 0x30]
mov dword [eax + 8], edx
mov edx, dword [ebx + 0x20]
mov eax, dword [ebp - 0x30]
shr eax, 8
mov dword [edx + 0xc], eax
mov esi, dword [ebp - 0x2c]
test byte [esi + 0x11], 2
je 0x40413f
mov al, byte [ebp - 0x30]
mov byte [ebp - 0x1c], al
mov eax, dword [ebp - 0x30]
shr eax, 8
mov byte [ebp - 0x1b], al
mov dword [esp + 8], 2
lea edx, [ebp - 0x1c]
mov dword [esp + 4], edx
mov eax, dword [esi + 0x18]
mov dword [esp], eax
call fcn.0040648e
mov dword [esi + 0x18], eax
mov ecx, dword [ebp - 0x2c]
mov dword [ecx], 4
mov dword [ebp - 0x38], 0
mov dword [ebp - 0x30], 0
mov ebx, dword [ebp - 0x2c]
test byte [ebx + 0x11], 4
je 0x404217
cmp dword [ebp - 0x38], 0xf
ja 0x4041a6
cmp dword [ebp - 0x34], 0
jne 0x404180
mov ebx, dword [ebp - 0x50]
jmp 0x4057c2
test eax, eax
jne 0x40418c
jmp 0x40562a
mov esi, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x38]
mov eax, dword [ebp - 0x34]
mov edx, dword [ebp - 0x3c]
dec eax
movzx edi, byte [edx]
shl edi, cl
add esi, edi
inc edx
add ecx, 8
cmp ecx, 0xf
jbe 0x404177
mov dword [ebp - 0x30], esi
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x3c], edx
mov eax, dword [ebp - 0x30]
mov edx, dword [ebp - 0x2c]
mov dword [edx + 0x40], eax
mov eax, dword [edx + 0x20]
test eax, eax
je 0x4041bc
mov ecx, dword [ebp - 0x30]
mov dword [eax + 0x14], ecx
mov ebx, dword [ebp - 0x2c]
test byte [ebx + 0x11], 2
jne 0x4041d5
mov dword [ebp - 0x38], 0
mov dword [ebp - 0x30], 0
jmp 0x404228
mov al, byte [ebp - 0x30]
mov byte [ebp - 0x1c], al
mov eax, dword [ebp - 0x30]
shr eax, 8
mov byte [ebp - 0x1b], al
mov dword [esp + 8], 2
lea edx, [ebp - 0x1c]
mov dword [esp + 4], edx
mov ecx, dword [ebp - 0x2c]
mov eax, dword [ecx + 0x18]
mov dword [esp], eax
call fcn.0040648e
mov ebx, dword [ebp - 0x2c]
mov dword [ebx + 0x18], eax
mov dword [ebp - 0x38], 0
mov dword [ebp - 0x30], 0
jmp 0x404228
mov esi, dword [ebp - 0x2c]
mov eax, dword [esi + 0x20]
test eax, eax
je 0x404228
mov dword [eax + 0x10], 0
mov edi, dword [ebp - 0x2c]
mov dword [edi], 5
mov eax, dword [ebp - 0x2c]
test byte [eax + 0x11], 4
je 0x4042cc
mov edx, dword [eax + 0x40]
mov ecx, dword [ebp - 0x34]
mov dword [ebp - 0x40], ecx
cmp ecx, edx
jbe 0x40424e
mov dword [ebp - 0x40], edx
cmp dword [ebp - 0x40], 0
je 0x4042bf
mov ebx, dword [ebp - 0x2c]
mov eax, dword [ebx + 0x20]
test eax, eax
je 0x40428b
mov ecx, dword [eax + 0x10]
test ecx, ecx
je 0x40428b
mov esi, dword [eax + 0x14]
sub esi, edx
mov edx, esi
mov eax, dword [eax + 0x18]
mov esi, dword [ebp - 0x40]
add esi, edx
mov ebx, dword [ebp - 0x40]
cmp esi, eax
jbe 0x40427f
mov ebx, eax
sub ebx, edx
lea eax, [ecx + edx]
mov edi, eax
mov esi, dword [ebp - 0x3c]
mov ecx, ebx
rep movsb byte es:[edi], byte [esi]
mov esi, dword [ebp - 0x2c]
test byte [esi + 0x11], 2
je 0x4042b0
mov edi, dword [ebp - 0x40]
mov dword [esp + 8], edi
mov eax, dword [ebp - 0x3c]
mov dword [esp + 4], eax
mov eax, dword [esi + 0x18]
mov dword [esp], eax
call fcn.0040648e
mov dword [esi + 0x18], eax
mov edx, dword [ebp - 0x40]
sub dword [ebp - 0x34], edx
add dword [ebp - 0x3c], edx
mov ecx, dword [ebp - 0x2c]
sub dword [ecx + 0x40], edx
mov ebx, dword [ebp - 0x2c]
cmp dword [ebx + 0x40], 0
jne 0x40563e
mov esi, dword [ebp - 0x2c]
mov dword [esi + 0x40], 0
mov dword [esi], 6
mov edi, dword [ebp - 0x2c]
test byte [edi + 0x11], 8
je 0x404364
cmp dword [ebp - 0x34], 0
je 0x405646
mov esi, 0
mov eax, dword [ebp - 0x3c]
mov al, byte [eax + esi]
mov byte [ebp - 0x40], al
movzx edi, al
inc esi
mov edx, dword [ebp - 0x2c]
mov eax, dword [edx + 0x20]
test eax, eax
je 0x404324
mov ebx, dword [eax + 0x1c]
test ebx, ebx
je 0x404324
mov ecx, dword [edx + 0x40]
cmp ecx, dword [eax + 0x20]
jae 0x404324
mov al, byte [ebp - 0x40]
mov byte [ebx + ecx], al
inc ecx
mov dword [edx + 0x40], ecx
test edi, edi
je 0x40432d
cmp dword [ebp - 0x34], esi
ja 0x4042f4
mov edx, dword [ebp - 0x2c]
test byte [edx + 0x11], 2
je 0x404352
mov dword [esp + 8], esi
mov ecx, dword [ebp - 0x3c]
mov dword [esp + 4], ecx
mov eax, dword [edx + 0x18]
mov dword [esp], eax
call fcn.0040648e
mov ebx, dword [ebp - 0x2c]
mov dword [ebx + 0x18], eax
sub dword [ebp - 0x34], esi
add dword [ebp - 0x3c], esi
test edi, edi
je 0x404375
mov ebx, dword [ebp - 0x50]
jmp 0x4057c2
mov esi, dword [ebp - 0x2c]
mov eax, dword [esi + 0x20]
test eax, eax
je 0x404375
mov dword [eax + 0x1c], 0
mov edi, dword [ebp - 0x2c]
mov dword [edi + 0x40], 0
mov dword [edi], 7
mov eax, dword [ebp - 0x2c]
test byte [eax + 0x11], 0x10
je 0x404413
cmp dword [ebp - 0x34], 0
je 0x40564e
mov esi, 0
mov edx, dword [ebp - 0x3c]
mov dl, byte [edx + esi]
mov byte [ebp - 0x40], dl
movzx edi, dl
inc esi
mov ecx, dword [ebp - 0x2c]
mov eax, dword [ecx + 0x20]
test eax, eax
je 0x4043d3
mov ebx, dword [eax + 0x24]
test ebx, ebx
je 0x4043d3
mov edx, ecx
mov ecx, dword [ecx + 0x40]
cmp ecx, dword [eax + 0x28]
jae 0x4043d3
mov al, byte [ebp - 0x40]
mov byte [ebx + ecx], al
inc ecx
mov dword [edx + 0x40], ecx
test edi, edi
je 0x4043dc
cmp dword [ebp - 0x34], esi
ja 0x4043a1
mov edx, dword [ebp - 0x2c]
test byte [edx + 0x11], 2
je 0x404401
mov dword [esp + 8], esi
mov ecx, dword [ebp - 0x3c]
mov dword [esp + 4], ecx
mov eax, dword [edx + 0x18]
mov dword [esp], eax
call fcn.0040648e
mov ebx, dword [ebp - 0x2c]
mov dword [ebx + 0x18], eax
sub dword [ebp - 0x34], esi
add dword [ebp - 0x3c], esi
test edi, edi
je 0x404424
mov ebx, dword [ebp - 0x50]
jmp 0x4057c2
mov esi, dword [ebp - 0x2c]
mov eax, dword [esi + 0x20]
test eax, eax
je 0x404424
mov dword [eax + 0x24], 0
mov edi, dword [ebp - 0x2c]
mov dword [edi], 8
mov eax, dword [ebp - 0x2c]
mov edx, dword [eax + 0x10]
test dh, 2
je 0x4044b5
cmp dword [ebp - 0x38], 0xf
ja 0x404482
cmp dword [ebp - 0x34], 0
jne 0x404455
mov ebx, dword [ebp - 0x50]
jmp 0x4057c2
test edx, edx
jne 0x404463
jmp 0x405656
mov ebx, edx
mov esi, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x38]
mov edx, dword [ebp - 0x34]
mov eax, dword [ebp - 0x3c]
dec edx
movzx edi, byte [eax]
shl edi, cl
add esi, edi
inc eax
add ecx, 8
cmp ecx, 0xf
jbe 0x40444c
mov dword [ebp - 0x30], esi
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x34], edx
mov edx, ebx
mov dword [ebp - 0x3c], eax
mov ecx, dword [ebp - 0x2c]
mov eax, dword [ecx + 0x18]
and eax, 0xffff
cmp eax, dword [ebp - 0x30]
je 0x4044a7
mov ebx, dword [ebp + 8]
mov dword [ebx + 0x18], str.header_crc_mismatch
mov dword [ecx], 0x1d
jmp 0x403cb6
mov dword [ebp - 0x38], 0
mov dword [ebp - 0x30], 0
mov esi, dword [ebp - 0x2c]
mov eax, dword [esi + 0x20]
test eax, eax
je 0x4044d2
sar edx, 9
and edx, 1
mov dword [eax + 0x2c], edx
mov eax, dword [esi + 0x20]
mov dword [eax + 0x30], 1
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.0040648e
mov edi, dword [ebp - 0x2c]
mov dword [edi + 0x18], eax
mov edx, dword [ebp + 8]
mov dword [edx + 0x30], eax
mov dword [edi], 0xb
jmp 0x403cb6
test eax, eax
jne 0x40451a
jmp 0x40566a
mov esi, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x38]
mov eax, dword [ebp - 0x34]
mov edx, dword [ebp - 0x3c]
dec eax
movzx edi, byte [edx]
shl edi, cl
add esi, edi
inc edx
add ecx, 8
cmp ecx, 0x1f
jbe 0x404505
mov dword [ebp - 0x30], esi
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x3c], edx
mov eax, dword [ebp - 0x30]
shl eax, 0x18
mov edx, dword [ebp - 0x30]
shr edx, 0x18
lea edx, [eax + edx]
mov eax, dword [ebp - 0x30]
shr eax, 8
and eax, 0xff00
lea eax, [edx + eax]
mov edx, dword [ebp - 0x30]
and edx, 0xff00
shl edx, 8
add eax, edx
mov ecx, dword [ebp - 0x2c]
mov dword [ecx + 0x18], eax
mov ebx, dword [ebp + 8]
mov dword [ebx + 0x30], eax
mov dword [ecx], 0xa
mov dword [ebp - 0x38], 0
mov dword [ebp - 0x30], 0
mov esi, dword [ebp - 0x2c]
cmp dword [esi + 0xc], 0
jne 0x4045b8
mov eax, dword [ebp - 0x5c]
mov edi, dword [ebp + 8]
mov dword [edi + 0xc], eax
mov edx, dword [ebp - 0x44]
mov dword [edi + 0x10], edx
mov ecx, dword [ebp - 0x3c]
mov dword [edi], ecx
mov ebx, dword [ebp - 0x34]
mov dword [edi + 4], ebx
mov eax, dword [ebp - 0x30]
mov dword [esi + 0x38], eax
mov edx, dword [ebp - 0x38]
mov dword [esi + 0x3c], edx
mov ebx, 2
jmp 0x4058ed
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.0040689c
mov ecx, dword [ebp - 0x2c]
mov dword [ecx + 0x18], eax
mov ebx, dword [ebp + 8]
mov dword [ebx + 0x30], eax
mov dword [ecx], 0xb
cmp dword [ebp - 0x6c], 1
jbe 0x40567e
mov esi, dword [ebp - 0x2c]
cmp dword [esi + 4], 0
jne 0x40460d
cmp dword [ebp - 0x38], 2
ja 0x40465a
cmp dword [ebp - 0x34], 0
jne 0x404631
mov ebx, dword [ebp - 0x50]
jmp 0x4057c2
mov ecx, dword [ebp - 0x38]
and ecx, 7
shr dword [ebp - 0x30], cl
and dword [ebp - 0x38], 0xfffffff8
mov edi, dword [ebp - 0x2c]
mov dword [edi], 0x1a
jmp 0x403cb6
test edx, edx
jne 0x40463d
jmp 0x405686
mov esi, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x38]
mov edx, dword [ebp - 0x34]
mov eax, dword [ebp - 0x3c]
dec edx
movzx edi, byte [eax]
shl edi, cl
add esi, edi
inc eax
add ecx, 8
cmp ecx, 2
jbe 0x404628
mov dword [ebp - 0x30], esi
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x34], edx
mov dword [ebp - 0x3c], eax
mov eax, dword [ebp - 0x30]
and eax, 1
mov edx, dword [ebp - 0x2c]
mov dword [edx + 4], eax
mov edx, dword [ebp - 0x30]
shr edx, 1
mov ecx, dword [ebp - 0x38]
dec ecx
mov eax, edx
and eax, 3
cmp eax, 1
je 0x404695
cmp eax, 1
jb 0x40468a
cmp eax, 2
je 0x4046d4
cmp eax, 3
jne 0x4046f2
jmp 0x4046df
mov ebx, dword [ebp - 0x2c]
mov dword [ebx], 0xd
jmp 0x4046f2
mov esi, dword [ebp - 0x2c]
mov dword [esi + 0x4c], 0x409b80
mov dword [esi + 0x54], 9
mov dword [esi + 0x50], 0x409b00
mov dword [esi + 0x58], 5
mov dword [esi], 0x13
cmp dword [ebp + 0xc], 6
jne 0x4046f2
mov ebx, dword [ebp - 0x50]
shr edx, 2
mov dword [ebp - 0x30], edx
sub ecx, 2
mov dword [ebp - 0x38], ecx
jmp 0x4057c2
mov edi, dword [ebp - 0x2c]
mov dword [edi], 0x10
jmp 0x4046f2
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.invalid_block_type
mov ebx, dword [ebp - 0x2c]
mov dword [ebx], 0x1d
shr edx, 2
mov dword [ebp - 0x30], edx
sub ecx, 2
mov dword [ebp - 0x38], ecx
jmp 0x403cb6
mov ecx, dword [ebp - 0x38]
and ecx, 7
shr dword [ebp - 0x30], cl
and dword [ebp - 0x38], 0xfffffff8
cmp dword [ebp - 0x38], 0x1f
ja 0x404756
cmp dword [ebp - 0x34], 0
jne 0x40472d
mov ebx, dword [ebp - 0x50]
jmp 0x4057c2
test eax, eax
jne 0x404739
jmp 0x40569a
mov esi, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x38]
mov eax, dword [ebp - 0x34]
mov edx, dword [ebp - 0x3c]
dec eax
movzx edi, byte [edx]
shl edi, cl
add esi, edi
inc edx
add ecx, 8
cmp ecx, 0x1f
jbe 0x404724
mov dword [ebp - 0x30], esi
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x3c], edx
movzx eax, word [ebp - 0x30]
mov edx, dword [ebp - 0x30]
shr edx, 0x10
xor edx, 0xffff
cmp eax, edx
je 0x404782
mov esi, dword [ebp + 8]
mov dword [esi + 0x18], str.invalid_stored_block_lengths
mov edi, dword [ebp - 0x2c]
mov dword [edi], 0x1d
jmp 0x403cb6
mov edx, dword [ebp - 0x2c]
mov dword [edx + 0x40], eax
mov dword [edx], 0xe
cmp dword [ebp + 0xc], 6
jne 0x4047aa
mov ebx, dword [ebp - 0x50]
mov dword [ebp - 0x38], 0
mov dword [ebp - 0x30], 0
jmp 0x4057c2
mov dword [ebp - 0x38], 0
mov dword [ebp - 0x30], 0
mov ecx, dword [ebp - 0x2c]
mov dword [ecx], 0xf
mov ebx, dword [ebp - 0x2c]
mov eax, dword [ebx + 0x40]
test eax, eax
je 0x404807
mov edx, dword [ebp - 0x44]
cmp edx, eax
jbe 0x4047d4
mov edx, eax
mov eax, edx
cmp edx, dword [ebp - 0x34]
jbe 0x4047de
mov eax, dword [ebp - 0x34]
test eax, eax
je 0x4056ae
mov edi, dword [ebp - 0x5c]
mov esi, dword [ebp - 0x3c]
mov ecx, eax
rep movsb byte es:[edi], byte [esi]
sub dword [ebp - 0x34], eax
mov dword [ebp - 0x3c], esi
sub dword [ebp - 0x44], eax
mov dword [ebp - 0x5c], edi
mov esi, dword [ebp - 0x2c]
sub dword [esi + 0x40], eax
jmp 0x403cb6
mov edi, dword [ebp - 0x2c]
mov dword [edi], 0xb
jmp 0x403cb6
test eax, eax
jne 0x40482a
jmp 0x4056b6
mov esi, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x38]
mov eax, dword [ebp - 0x34]
mov edx, dword [ebp - 0x3c]
dec eax
movzx edi, byte [edx]
shl edi, cl
add esi, edi
inc edx
add ecx, 8
cmp ecx, 0xd
jbe 0x404815
mov dword [ebp - 0x30], esi
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x3c], edx
mov eax, dword [ebp - 0x30]
and eax, 0x1f
add eax, 0x101
mov edx, dword [ebp - 0x2c]
mov dword [edx + 0x60], eax
mov edx, dword [ebp - 0x30]
shr edx, 5
and edx, 0x1f
inc edx
mov ecx, dword [ebp - 0x2c]
mov dword [ecx + 0x64], edx
mov ecx, dword [ebp - 0x30]
shr ecx, 0xa
and ecx, 0xf
add ecx, 4
mov ebx, dword [ebp - 0x2c]
mov dword [ebx + 0x5c], ecx
shr dword [ebp - 0x30], 0xe
sub dword [ebp - 0x38], 0xe
cmp eax, 0x11e
ja 0x40488e
cmp edx, 0x1e
jbe 0x4048a6
mov esi, dword [ebp + 8]
mov dword [esi + 0x18], str.too_many_length_or_distance_symbols
mov edi, dword [ebp - 0x2c]
mov dword [edi], 0x1d
jmp 0x403cb6
mov eax, dword [ebp - 0x2c]
mov dword [eax + 0x68], 0
mov dword [eax], 0x11
mov ecx, dword [ebp - 0x2c]
mov edx, dword [ecx + 0x68]
cmp edx, dword [ecx + 0x5c]
jae 0x404948
lea esi, [edx + edx + 0x409ac0]
mov ebx, edx
mov dword [ebp - 0x40], esi
mov esi, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x38]
jmp 0x404929
test eax, eax
jne 0x4048ea
jmp 0x4056ca
mov edi, ebx
mov eax, dword [ebp - 0x34]
mov edx, dword [ebp - 0x3c]
dec eax
movzx ebx, byte [edx]
shl ebx, cl
add esi, ebx
inc edx
add ecx, 8
cmp ecx, 2
jbe 0x4048d9
mov ebx, edi
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x3c], edx
mov edx, dword [ebp - 0x40]
movzx edx, word [edx]
mov edi, esi
and edi, 7
mov eax, dword [ebp - 0x2c]
mov word [eax + edx*2 + 0x70], di
inc ebx
mov dword [eax + 0x68], ebx
shr esi, 3
sub ecx, 3
add dword [ebp - 0x40], 2
cmp dword [eax + 0x5c], ebx
jbe 0x404942
cmp ecx, 2
ja 0x404903
cmp dword [ebp - 0x34], 0
jne 0x4048e2
mov dword [ebp - 0x30], esi
mov ebx, dword [ebp - 0x50]
mov dword [ebp - 0x38], ecx
jmp 0x4057c2
mov dword [ebp - 0x30], esi
mov dword [ebp - 0x38], ecx
mov edi, dword [ebp - 0x2c]
mov eax, dword [edi + 0x68]
cmp eax, 0x12
ja 0x40497a
lea edx, [eax + eax + 0x409ac0]
mov ecx, 0x409ae6
movzx eax, word [edx]
mov ebx, dword [ebp - 0x2c]
mov word [ebx + eax*2 + 0x70], 0
add edx, 2
cmp edx, ecx
jne 0x40495f
mov dword [ebx + 0x68], 0x13
mov edi, dword [ebp - 0x60]
mov esi, dword [ebp - 0x2c]
mov dword [esi + 0x6c], edi
mov dword [esi + 0x4c], edi
mov dword [esi + 0x54], 7
mov eax, dword [ebp - 0x68]
mov dword [esp + 0x14], eax
mov edx, dword [ebp - 0x74]
mov dword [esp + 0x10], edx
mov ecx, dword [ebp - 0x64]
mov dword [esp + 0xc], ecx
mov dword [esp + 8], 0x13
mov ebx, dword [ebp - 0x70]
mov dword [esp + 4], ebx
mov dword [esp], 0
call fcn.00405958
mov dword [ebp - 0x50], eax
test eax, eax
je 0x4049dc
mov esi, dword [ebp + 8]
mov dword [esi + 0x18], str.invalid_code_lengths_set
mov edi, dword [ebp - 0x2c]
mov dword [edi], 0x1d
jmp 0x403cb6
mov eax, dword [ebp - 0x2c]
mov dword [eax + 0x68], 0
mov dword [eax], 0x12
mov edx, dword [ebp - 0x2c]
mov eax, dword [edx + 0x64]
add eax, dword [edx + 0x60]
mov dword [ebp - 0x4c], eax
mov ebx, dword [ebp - 0x38]
mov eax, dword [ebp - 0x34]
mov edx, dword [ebp - 0x3c]
jmp 0x404c8c
test eax, eax
jne 0x404a24
mov dword [ebp - 0x38], ebx
mov ebx, dword [ebp - 0x50]
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x3c], edx
jmp 0x4057c2
test eax, eax
jne 0x404a29
jmp 0x4056de
mov esi, dword [ebp - 0x30]
mov ecx, ebx
dec eax
movzx edi, byte [edx]
shl edi, cl
add esi, edi
inc edx
add ecx, 8
mov ebx, dword [ebp - 0x38]
and ebx, esi
mov edi, dword [ebp - 0x3c]
lea ebx, [edi + ebx*4]
mov di, word [ebx + 2]
mov bl, byte [ebx + 1]
mov byte [ebp - 0x34], bl
movzx ebx, bl
cmp ebx, ecx
ja 0x404a1b
mov dword [ebp - 0x40], ebx
mov dword [ebp - 0x30], esi
mov ebx, ecx
cmp di, 0xf
ja 0x404abf
cmp ebx, dword [ebp - 0x40]
jae 0x404a9d
test eax, eax
jne 0x404a82
mov dword [ebp - 0x38], ebx
mov ebx, dword [ebp - 0x50]
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x3c], edx
jmp 0x4057c2
test eax, eax
jne 0x404a87
jmp 0x4056f2
mov ecx, ebx
mov ebx, dword [ebp - 0x30]
dec eax
movzx esi, byte [edx]
shl esi, cl
add ebx, esi
inc edx
add ecx, 8
cmp ecx, dword [ebp - 0x40]
jb 0x404a79
mov dword [ebp - 0x30], ebx
mov ebx, ecx
mov cl, byte [ebp - 0x34]
shr dword [ebp - 0x30], cl
sub ebx, dword [ebp - 0x40]
mov esi, dword [ebp - 0x48]
mov ecx, dword [ebp - 0x2c]
mov word [ecx + esi*2 + 0x70], di
mov ecx, esi
inc ecx
mov esi, dword [ebp - 0x2c]
mov dword [esi + 0x68], ecx
jmp 0x404c8c
cmp di, 0x10
jne 0x404b5a
movzx edi, byte [ebp - 0x34]
lea ecx, [edi + 2]
mov dword [ebp - 0x34], ecx
cmp ecx, ebx
jbe 0x404b08
test eax, eax
jne 0x404af4
mov dword [ebp - 0x38], ebx
mov ebx, dword [ebp - 0x50]
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x3c], edx
jmp 0x4057c2
test eax, eax
je 0x405706
dec eax
movzx esi, byte [edx]
mov cl, bl
shl esi, cl
add dword [ebp - 0x30], esi
inc edx
add ebx, 8
cmp ebx, dword [ebp - 0x34]
jb 0x404aec
mov ecx, edi
shr dword [ebp - 0x30], cl
sub ebx, dword [ebp - 0x40]
cmp dword [ebp - 0x48], 0
jne 0x404b37
mov dword [ebp - 0x38], ebx
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x3c], edx
mov ebx, dword [ebp + 8]
mov dword [ebx + 0x18], str.invalid_bit_length_repeat
mov esi, dword [ebp - 0x2c]
mov dword [esi], 0x1d
jmp 0x403cb6
mov edi, dword [ebp - 0x48]
mov ecx, dword [ebp - 0x2c]
movzx edi, word [ecx + edi*2 + 0x6e]
mov dword [ebp - 0x40], edi
mov edi, dword [ebp - 0x30]
and edi, 3
add edi, 3
shr dword [ebp - 0x30], 2
sub ebx, 2
jmp 0x404c2b
cmp di, 0x11
je 0x404b87
movzx edi, byte [ebp - 0x34]
lea ecx, [edi + 7]
mov dword [ebp - 0x34], ecx
cmp ecx, ebx
jbe 0x404c09
test eax, eax
jne 0x404bf3
mov dword [ebp - 0x38], ebx
mov ebx, dword [ebp - 0x50]
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x3c], edx
jmp 0x4057c2
movzx edi, byte [ebp - 0x34]
lea esi, [edi + 3]
mov dword [ebp - 0x34], esi
cmp esi, ebx
jbe 0x404bc6
test eax, eax
jne 0x404bb2
mov dword [ebp - 0x38], ebx
mov ebx, dword [ebp - 0x50]
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x3c], edx
jmp 0x4057c2
test eax, eax
je 0x405717
dec eax
movzx esi, byte [edx]
mov cl, bl
shl esi, cl
add dword [ebp - 0x30], esi
inc edx
add ebx, 8
cmp ebx, dword [ebp - 0x34]
jb 0x404baa
mov esi, dword [ebp - 0x30]
mov ecx, edi
shr esi, cl
mov edi, esi
and edi, 7
add edi, 3
shr esi, 3
mov dword [ebp - 0x30], esi
sub ebx, dword [ebp - 0x40]
lea ebx, [ebx - 3]
mov dword [ebp - 0x40], 0
jmp 0x404c2b
test eax, eax
jne 0x404bf5
jmp 0x405728
mov ecx, ebx
dec eax
movzx esi, byte [edx]
shl esi, cl
add dword [ebp - 0x30], esi
inc edx
add ecx, 8
cmp ecx, dword [ebp - 0x34]
jb 0x404bea
mov ebx, ecx
mov esi, dword [ebp - 0x30]
mov ecx, edi
shr esi, cl
mov edi, esi
and edi, 0x7f
add edi, 0xb
shr esi, 7
mov dword [ebp - 0x30], esi
sub ebx, dword [ebp - 0x40]
lea ebx, [ebx - 7]
mov dword [ebp - 0x40], 0
mov esi, dword [ebp - 0x48]
add esi, edi
mov dword [ebp - 0x38], esi
cmp dword [ebp - 0x4c], esi
jb 0x404c3e
test edi, edi
jne 0x404c5f
jmp 0x404c8c
mov dword [ebp - 0x38], ebx
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x3c], edx
mov edi, dword [ebp + 8]
mov dword [edi + 0x18], str.invalid_bit_length_repeat
mov eax, dword [ebp - 0x2c]
mov dword [eax], 0x1d
jmp 0x403cb6
mov ecx, dword [ebp - 0x48]
mov esi, dword [ebp - 0x2c]
lea ecx, [esi + ecx*2 + 0x70]
mov dword [ebp - 0x34], 0
mov esi, ecx
mov ecx, dword [ebp - 0x40]
mov word [esi], cx
inc dword [ebp - 0x34]
add esi, 2
cmp dword [ebp - 0x34], edi
jne 0x404c75
mov edi, dword [ebp - 0x38]
mov esi, dword [ebp - 0x2c]
mov dword [esi + 0x68], edi
mov ecx, dword [ebp - 0x2c]
mov ecx, dword [ecx + 0x68]
mov dword [ebp - 0x48], ecx
mov esi, dword [ebp - 0x4c]
cmp ecx, esi
jae 0x404ce1
mov edi, dword [ebp - 0x2c]
mov edi, dword [edi + 0x4c]
mov dword [ebp - 0x3c], edi
mov esi, dword [ebp - 0x2c]
mov ecx, dword [esi + 0x54]
mov edi, 1
shl edi, cl
mov ecx, edi
dec ecx
mov dword [ebp - 0x38], ecx
mov ecx, dword [ebp - 0x30]
and ecx, dword [ebp - 0x38]
mov esi, dword [ebp - 0x3c]
lea ecx, [esi + ecx*4]
mov di, word [ecx + 2]
mov cl, byte [ecx + 1]
mov byte [ebp - 0x34], cl
movzx ecx, cl
mov dword [ebp - 0x40], ecx
cmp ebx, ecx
jb 0x404a06
jmp 0x404a59
mov dword [ebp - 0x38], ebx
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x3c], edx
mov ebx, dword [ebp - 0x2c]
cmp dword [ebx], 0x1d
je 0x403cb6
cmp word [ebx + 0x270], 0
jne 0x404d15
mov esi, dword [ebp + 8]
mov dword [esi + 0x18], str.invalid_code____missing_end_of_block
mov dword [ebx], 0x1d
jmp 0x403cb6
mov eax, dword [ebp - 0x60]
mov edi, dword [ebp - 0x2c]
mov dword [edi + 0x6c], eax
mov dword [edi + 0x4c], eax
mov dword [edi + 0x54], 9
mov edx, dword [ebp - 0x68]
mov dword [esp + 0x14], edx
mov ecx, dword [ebp - 0x74]
mov dword [esp + 0x10], ecx
mov ebx, dword [ebp - 0x64]
mov dword [esp + 0xc], ebx
mov eax, dword [edi + 0x60]
mov dword [esp + 8], eax
mov esi, dword [ebp - 0x70]
mov dword [esp + 4], esi
mov dword [esp], 1
call fcn.00405958
mov dword [ebp - 0x50], eax
test eax, eax
je 0x404d76
mov edi, dword [ebp + 8]
mov dword [edi + 0x18], str.invalid_literal_lengths_set
mov eax, dword [ebp - 0x2c]
mov dword [eax], 0x1d
jmp 0x403cb6
mov edx, dword [ebp - 0x2c]
mov eax, dword [edx + 0x6c]
mov dword [edx + 0x50], eax
mov dword [edx + 0x58], 6
mov ecx, dword [ebp - 0x68]
mov dword [esp + 0x14], ecx
mov ebx, dword [ebp - 0x78]
mov dword [esp + 0x10], ebx
mov esi, dword [ebp - 0x64]
mov dword [esp + 0xc], esi
mov eax, dword [edx + 0x64]
mov dword [esp + 8], eax
mov eax, dword [edx + 0x60]
lea eax, [edx + eax*2 + 0x70]
mov dword [esp + 4], eax
mov dword [esp], 2
call fcn.00405958
mov dword [ebp - 0x50], eax
test eax, eax
je 0x404dd8
mov edi, dword [ebp + 8]
mov dword [edi + 0x18], str.invalid_distances_set
mov eax, dword [ebp - 0x2c]
mov dword [eax], 0x1d
jmp 0x403cb6
mov edx, dword [ebp - 0x2c]
mov dword [edx], 0x13
cmp dword [ebp + 0xc], 6
je 0x405739
mov ecx, dword [ebp - 0x2c]
mov dword [ecx], 0x14
cmp dword [ebp - 0x34], 5
jbe 0x404e96
cmp dword [ebp - 0x44], 0x101
jbe 0x404e96
mov esi, dword [ebp - 0x5c]
mov ebx, dword [ebp + 8]
mov dword [ebx + 0xc], esi
mov edi, dword [ebp - 0x44]
mov dword [ebx + 0x10], edi
mov eax, dword [ebp - 0x3c]
mov dword [ebx], eax
mov edx, dword [ebp - 0x34]
mov dword [ebx + 4], edx
mov ecx, dword [ebp - 0x30]
mov ebx, dword [ebp - 0x2c]
mov dword [ebx + 0x38], ecx
mov esi, dword [ebp - 0x38]
mov dword [ebx + 0x3c], esi
mov edi, dword [ebp - 0x54]
mov dword [esp + 4], edi
mov eax, dword [ebp + 8]
mov dword [esp], eax
call fcn.00405f68
mov edx, dword [ebp + 8]
mov edx, dword [edx + 0xc]
mov dword [ebp - 0x5c], edx
mov ecx, dword [ebp + 8]
mov ecx, dword [ecx + 0x10]
mov dword [ebp - 0x44], ecx
mov ebx, dword [ebp + 8]
mov ebx, dword [ebx]
mov dword [ebp - 0x3c], ebx
mov esi, dword [ebp + 8]
mov esi, dword [esi + 4]
mov dword [ebp - 0x34], esi
mov eax, dword [ebp - 0x2c]
mov eax, dword [eax + 0x38]
mov dword [ebp - 0x30], eax
mov edx, dword [ebp - 0x2c]
mov edx, dword [edx + 0x3c]
mov dword [ebp - 0x38], edx
mov ecx, dword [ebp - 0x2c]
cmp dword [ecx], 0xb
jne 0x403cb6
mov dword [ecx + 0x1bc4], 0xffffffff
jmp 0x403cb6
mov ebx, dword [ebp - 0x2c]
mov dword [ebx + 0x1bc4], 0
mov edi, dword [ebx + 0x4c]
mov ecx, dword [ebx + 0x54]
mov esi, 1
shl esi, cl
mov ecx, esi
dec ecx
mov dword [ebp - 0x48], ecx
mov eax, dword [ebp - 0x30]
and eax, ecx
lea edx, [edi + eax*4]
mov al, byte [edx]
mov byte [ebp - 0x40], al
mov ax, word [edx + 2]
mov dl, byte [edx + 1]
mov byte [ebp - 0x7c], dl
movzx esi, dl
cmp dword [ebp - 0x38], esi
jae 0x404f33
cmp dword [ebp - 0x34], 0
jne 0x404eec
mov ebx, dword [ebp - 0x50]
jmp 0x4057c2
test edi, edi
jne 0x404ef8
jmp 0x405741
mov ecx, dword [ebp - 0x38]
mov edx, dword [ebp - 0x3c]
mov dword [ebp - 0x4c], edi
mov edi, dword [ebp - 0x34]
dec edi
movzx eax, byte [edx]
shl eax, cl
add dword [ebp - 0x30], eax
inc edx
add ecx, 8
mov eax, dword [ebp - 0x30]
and eax, dword [ebp - 0x48]
mov esi, dword [ebp - 0x4c]
lea ebx, [esi + eax*4]
mov al, byte [ebx]
mov byte [ebp - 0x40], al
mov ax, word [ebx + 2]
mov bl, byte [ebx + 1]
movzx esi, bl
cmp esi, ecx
ja 0x404ee3
mov byte [ebp - 0x7c], bl
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x34], edi
mov dword [ebp - 0x3c], edx
mov edi, dword [ebp - 0x4c]
cmp byte [ebp - 0x40], 0
je 0x405005
movzx ecx, byte [ebp - 0x40]
test cl, 0xf0
jne 0x405005
movzx eax, ax
mov dword [ebp - 0x80], eax
movzx edx, byte [ebp - 0x7c]
mov dword [ebp - 0x48], edx
add ecx, edx
mov ebx, 1
shl ebx, cl
mov ecx, ebx
dec ecx
mov dword [ebp - 0x4c], ecx
mov eax, ecx
and eax, dword [ebp - 0x30]
mov cl, byte [ebp - 0x48]
shr eax, cl
add eax, dword [ebp - 0x80]
lea edx, [edi + eax*4]
mov bl, byte [edx]
mov byte [ebp - 0x40], bl
mov ax, word [edx + 2]
mov dl, byte [edx + 1]
mov byte [ebp - 0x7c], dl
movzx edx, dl
add edx, dword [ebp - 0x48]
cmp edx, dword [ebp - 0x38]
jbe 0x404ff0
cmp dword [ebp - 0x34], 0
jne 0x404fa9
mov ebx, dword [ebp - 0x50]
jmp 0x4057c2
cmp dword [ebp - 0x34], 0
jne 0x404faf
jmp 0x40574f
mov ebx, dword [ebp - 0x38]
mov edx, dword [ebp - 0x3c]
dec dword [ebp - 0x34]
movzx eax, byte [edx]
mov cl, bl
shl eax, cl
add dword [ebp - 0x30], eax
inc edx
add ebx, 8
mov eax, dword [ebp - 0x30]
and eax, dword [ebp - 0x4c]
mov cl, byte [ebp - 0x48]
shr eax, cl
add eax, dword [ebp - 0x80]
lea ecx, [edi + eax*4]
mov al, byte [ecx]
mov byte [ebp - 0x40], al
mov ax, word [ecx + 2]
mov cl, byte [ecx + 1]
mov byte [ebp - 0x7c], cl
movzx ecx, cl
add ecx, dword [ebp - 0x48]
cmp ecx, ebx
ja 0x404f9e
mov dword [ebp - 0x38], ebx
mov dword [ebp - 0x3c], edx
mov cl, byte [ebp - 0x48]
shr dword [ebp - 0x30], cl
sub dword [ebp - 0x38], esi
mov esi, dword [ebp - 0x48]
mov ebx, dword [ebp - 0x2c]
mov dword [ebx + 0x1bc4], esi
movzx ecx, byte [ebp - 0x7c]
shr dword [ebp - 0x30], cl
sub dword [ebp - 0x38], ecx
mov edi, dword [ebp - 0x2c]
add dword [edi + 0x1bc4], ecx
movzx eax, ax
mov dword [edi + 0x40], eax
cmp byte [ebp - 0x40], 0
jne 0x40502f
mov dword [edi], 0x19
jmp 0x403cb6
movzx eax, byte [ebp - 0x40]
test al, 0x20
je 0x40504f
mov eax, dword [ebp - 0x2c]
mov dword [eax + 0x1bc4], 0xffffffff
mov dword [eax], 0xb
jmp 0x403cb6
test al, 0x40
je 0x40506b
mov edx, dword [ebp + 8]
mov dword [edx + 0x18], 0x4099b3
mov ecx, dword [ebp - 0x2c]
mov dword [ecx], 0x1d
jmp 0x403cb6
mov al, byte [ebp - 0x40]
and eax, 0xf
mov ebx, dword [ebp - 0x2c]
mov dword [ebx + 0x48], eax
mov dword [ebx], 0x15
mov esi, dword [ebp - 0x2c]
mov edx, dword [esi + 0x48]
test edx, edx
je 0x4050ef
cmp dword [ebp - 0x38], edx
jae 0x4050cb
cmp dword [ebp - 0x34], 0
jne 0x4050a3
mov ebx, dword [ebp - 0x50]
jmp 0x4057c2
test esi, esi
jne 0x4050af
jmp 0x40575a
mov ebx, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x38]
mov esi, dword [ebp - 0x34]
mov eax, dword [ebp - 0x3c]
dec esi
movzx edi, byte [eax]
shl edi, cl
add ebx, edi
inc eax
add ecx, 8
cmp edx, ecx
ja 0x40509a
mov dword [ebp - 0x30], ebx
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x34], esi
mov dword [ebp - 0x3c], eax
mov ebx, 1
mov cl, dl
shl ebx, cl
lea eax, [ebx - 1]
and eax, dword [ebp - 0x30]
mov esi, dword [ebp - 0x2c]
add dword [esi + 0x40], eax
mov ecx, dword [esi + 0x48]
shr dword [ebp - 0x30], cl
sub dword [ebp - 0x38], ecx
add dword [esi + 0x1bc4], ecx
mov edi, dword [ebp - 0x2c]
mov eax, dword [edi + 0x40]
mov dword [edi + 0x1bc8], eax
mov dword [edi], 0x16
mov eax, dword [ebp - 0x2c]
mov eax, dword [eax + 0x50]
mov dword [ebp - 0x48], eax
mov edx, dword [ebp - 0x2c]
mov ecx, dword [edx + 0x58]
mov ebx, 1
shl ebx, cl
mov ecx, ebx
dec ecx
mov dword [ebp - 0x4c], ecx
mov eax, dword [ebp - 0x30]
and eax, ecx
mov esi, dword [ebp - 0x48]
lea edx, [esi + eax*4]
movzx edi, byte [edx]
mov ax, word [edx + 2]
mov dl, byte [edx + 1]
mov byte [ebp - 0x40], dl
movzx esi, dl
cmp dword [ebp - 0x38], esi
jae 0x40519a
cmp dword [ebp - 0x34], 0
jne 0x405154
mov ebx, dword [ebp - 0x50]
jmp 0x4057c2
test eax, eax
jne 0x40515d
jmp 0x40576b
mov ecx, dword [ebp - 0x38]
mov eax, dword [ebp - 0x34]
mov edx, dword [ebp - 0x3c]
dec eax
movzx ebx, byte [edx]
shl ebx, cl
add dword [ebp - 0x30], ebx
inc edx
add ecx, 8
mov ebx, dword [ebp - 0x30]
and ebx, dword [ebp - 0x4c]
mov edi, dword [ebp - 0x48]
lea esi, [edi + ebx*4]
movzx edi, byte [esi]
mov bx, word [esi + 2]
mov word [ebp - 0x3c], bx
mov bl, byte [esi + 1]
mov byte [ebp - 0x40], bl
movzx esi, bl
cmp esi, ecx
ja 0x40514b
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 0x3c]
mov dword [ebp - 0x3c], edx
mov edx, edi
movzx ecx, dl
test cl, 0xf0
jne 0x405273
movzx eax, ax
mov dword [ebp - 0x80], eax
movzx ebx, byte [ebp - 0x40]
mov dword [ebp - 0x4c], ebx
add ecx, ebx
mov edi, 1
shl edi, cl
mov ecx, edi
dec ecx
mov dword [ebp - 0x7c], ecx
mov eax, ecx
and eax, dword [ebp - 0x30]
mov cl, byte [ebp - 0x4c]
shr eax, cl
add eax, dword [ebp - 0x80]
mov ebx, dword [ebp - 0x48]
lea edx, [ebx + eax*4]
movzx edi, byte [edx]
mov ax, word [edx + 2]
mov dl, byte [edx + 1]
mov byte [ebp - 0x40], dl
movzx edx, dl
add edx, dword [ebp - 0x4c]
cmp edx, dword [ebp - 0x38]
jbe 0x40525e
cmp dword [ebp - 0x34], 0
jne 0x405206
mov ebx, dword [ebp - 0x50]
jmp 0x4057c2
test edx, edx
jne 0x405215
jmp 0x405779
mov ebx, dword [ebp - 0x38]
mov edx, dword [ebp - 0x34]
mov dword [ebp - 0x84], esi
mov esi, dword [ebp - 0x3c]
dec edx
movzx eax, byte [esi]
mov cl, bl
shl eax, cl
add dword [ebp - 0x30], eax
inc esi
add ebx, 8
mov eax, dword [ebp - 0x30]
and eax, dword [ebp - 0x7c]
mov cl, byte [ebp - 0x4c]
shr eax, cl
add eax, dword [ebp - 0x80]
mov edi, dword [ebp - 0x48]
lea ecx, [edi + eax*4]
movzx edi, byte [ecx]
mov ax, word [ecx + 2]
mov cl, byte [ecx + 1]
mov byte [ebp - 0x40], cl
movzx ecx, cl
add ecx, dword [ebp - 0x4c]
cmp ecx, ebx
ja 0x4051fd
mov dword [ebp - 0x38], ebx
mov dword [ebp - 0x34], edx
mov dword [ebp - 0x3c], esi
mov esi, dword [ebp - 0x84]
mov cl, byte [ebp - 0x4c]
shr dword [ebp - 0x30], cl
sub dword [ebp - 0x38], esi
mov esi, dword [ebp - 0x4c]
mov ebx, dword [ebp - 0x2c]
add dword [ebx + 0x1bc4], esi
movzx ecx, byte [ebp - 0x40]
shr dword [ebp - 0x30], cl
sub dword [ebp - 0x38], ecx
mov edx, dword [ebp - 0x2c]
add dword [edx + 0x1bc4], ecx
test edi, 0x40
je 0x4052a3
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x18], 0x4099cf
mov dword [edx], 0x1d
jmp 0x403cb6
movzx eax, ax
mov ebx, dword [ebp - 0x2c]
mov dword [ebx + 0x44], eax
and edi, 0xf
mov dword [ebx + 0x48], edi
mov dword [ebx], 0x17
mov esi, dword [ebp - 0x2c]
mov edx, dword [esi + 0x48]
test edx, edx
je 0x40532a
cmp dword [ebp - 0x38], edx
jae 0x405306
cmp dword [ebp - 0x34], 0
jne 0x4052de
mov ebx, dword [ebp - 0x50]
jmp 0x4057c2
test eax, eax
jne 0x4052ea
jmp 0x405787
mov ebx, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x38]
mov eax, dword [ebp - 0x34]
mov esi, dword [ebp - 0x3c]
dec eax
movzx edi, byte [esi]
shl edi, cl
add ebx, edi
inc esi
add ecx, 8
cmp edx, ecx
ja 0x4052d5
mov dword [ebp - 0x30], ebx
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x3c], esi
mov ebx, 1
mov cl, dl
shl ebx, cl
lea eax, [ebx - 1]
and eax, dword [ebp - 0x30]
mov esi, dword [ebp - 0x2c]
add dword [esi + 0x44], eax
mov ecx, dword [esi + 0x48]
shr dword [ebp - 0x30], cl
sub dword [ebp - 0x38], ecx
add dword [esi + 0x1bc4], ecx
mov edi, dword [ebp - 0x2c]
mov dword [edi], 0x18
cmp dword [ebp - 0x44], 0
je 0x405798
mov ecx, dword [ebp - 0x54]
sub ecx, dword [ebp - 0x44]
mov eax, dword [ebp - 0x2c]
mov edx, dword [eax + 0x44]
cmp ecx, edx
jae 0x4053a2
sub edx, ecx
mov ecx, edx
cmp edx, dword [eax + 0x2c]
jbe 0x405374
cmp dword [eax + 0x1bc0], 0
je 0x405374
mov edx, dword [ebp + 8]
mov dword [edx + 0x18], 0x4099e5
mov dword [eax], 0x1d
jmp 0x403cb6
mov ebx, dword [ebp - 0x2c]
mov eax, dword [ebx + 0x30]
cmp ecx, eax
jbe 0x40538a
sub ecx, eax
mov edx, dword [ebx + 0x28]
sub edx, ecx
add edx, dword [ebx + 0x34]
jmp 0x405394
sub eax, ecx
mov edx, eax
mov esi, dword [ebp - 0x2c]
add edx, dword [esi + 0x34]
mov edi, dword [ebp - 0x2c]
mov eax, dword [edi + 0x40]
cmp ecx, eax
jbe 0x4053af
mov ecx, eax
jmp 0x4053af
mov eax, dword [ebp - 0x5c]
sub eax, edx
mov edx, eax
mov ebx, dword [ebp - 0x2c]
mov ecx, dword [ebx + 0x40]
cmp ecx, dword [ebp - 0x44]
jbe 0x4053b7
mov ecx, dword [ebp - 0x44]
sub dword [ebp - 0x44], ecx
mov esi, dword [ebp - 0x2c]
sub dword [esi + 0x40], ecx
mov eax, 0
mov esi, dword [ebp - 0x5c]
mov bl, byte [edx + eax]
mov byte [esi + eax], bl
inc eax
cmp ecx, eax
jne 0x4053c8
add dword [ebp - 0x5c], ecx
mov edi, dword [ebp - 0x2c]
cmp dword [edi + 0x40], 0
jne 0x403cb6
mov dword [edi], 0x14
jmp 0x403cb6
cmp dword [ebp - 0x44], 0
je 0x40579d
mov edx, dword [ebp - 0x2c]
mov eax, dword [edx + 0x40]
mov ecx, dword [ebp - 0x5c]
mov byte [ecx], al
inc ecx
mov dword [ebp - 0x5c], ecx
dec dword [ebp - 0x44]
mov dword [edx], 0x14
jmp 0x403cb6
mov ebx, dword [ebp - 0x2c]
cmp dword [ebx + 8], 0
je 0x405531
cmp dword [ebp - 0x38], 0x1f
ja 0x405468
cmp dword [ebp - 0x34], 0
jne 0x40543f
mov ebx, dword [ebp - 0x50]
jmp 0x4057c2
test eax, eax
jne 0x40544b
jmp 0x4057a2
mov esi, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x38]
mov eax, dword [ebp - 0x34]
mov edx, dword [ebp - 0x3c]
dec eax
movzx edi, byte [edx]
shl edi, cl
add esi, edi
inc edx
add ecx, 8
cmp ecx, 0x1f
jbe 0x405436
mov dword [ebp - 0x30], esi
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x3c], edx
mov eax, dword [ebp - 0x54]
sub eax, dword [ebp - 0x44]
mov esi, dword [ebp + 8]
add dword [esi + 0x14], eax
mov edi, dword [ebp - 0x2c]
add dword [edi + 0x1c], eax
test eax, eax
je 0x4054c5
cmp dword [edi + 0x10], 0
je 0x40549e
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x5c]
sub edx, eax
mov dword [esp + 4], edx
mov eax, dword [edi + 0x18]
mov dword [esp], eax
call fcn.0040648e
jmp 0x4054b9
mov dword [esp + 8], eax
mov ecx, dword [ebp - 0x5c]
sub ecx, eax
mov dword [esp + 4], ecx
mov ebx, dword [ebp - 0x2c]
mov eax, dword [ebx + 0x18]
mov dword [esp], eax
call fcn.0040689c
mov esi, dword [ebp - 0x2c]
mov dword [esi + 0x18], eax
mov edi, dword [ebp + 8]
mov dword [edi + 0x30], eax
mov eax, dword [ebp - 0x30]
mov edx, dword [ebp - 0x2c]
cmp dword [edx + 0x10], 0
jne 0x4054fa
and eax, 0xff00
mov ecx, eax
shl ecx, 8
mov eax, dword [ebp - 0x30]
shl eax, 0x18
mov edx, dword [ebp - 0x30]
shr edx, 0x18
lea edx, [eax + edx]
mov eax, dword [ebp - 0x30]
shr eax, 8
and eax, 0xff00
lea eax, [edx + eax]
add eax, ecx
mov ecx, dword [ebp - 0x2c]
cmp eax, dword [ecx + 0x18]
je 0x40551d
mov ebx, dword [ebp + 8]
mov dword [ebx + 0x18], str.incorrect_data_check
mov dword [ecx], 0x1d
mov esi, dword [ebp - 0x44]
mov dword [ebp - 0x54], esi
jmp 0x403cb6
mov edi, dword [ebp - 0x44]
mov dword [ebp - 0x54], edi
mov dword [ebp - 0x38], 0
mov dword [ebp - 0x30], 0
mov eax, dword [ebp - 0x2c]
mov dword [eax], 0x1b
mov edx, dword [ebp - 0x2c]
cmp dword [edx + 8], 0
je 0x4055bd
cmp dword [edx + 0x10], 0
je 0x4055bd
cmp dword [ebp - 0x38], 0x1f
ja 0x40558f
cmp dword [ebp - 0x34], 0
jne 0x405566
mov ebx, dword [ebp - 0x50]
jmp 0x4057c2
test edx, edx
jne 0x405572
jmp 0x4057b3
mov esi, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x38]
mov edx, dword [ebp - 0x34]
mov eax, dword [ebp - 0x3c]
dec edx
movzx edi, byte [eax]
shl edi, cl
add esi, edi
inc eax
add ecx, 8
cmp ecx, 0x1f
jbe 0x40555d
mov dword [ebp - 0x30], esi
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x34], edx
mov dword [ebp - 0x3c], eax
mov ecx, dword [ebp - 0x30]
mov ebx, dword [ebp - 0x2c]
cmp dword [ebx + 0x1c], ecx
je 0x4055af
mov esi, dword [ebp + 8]
mov dword [esi + 0x18], str.incorrect_length_check
mov dword [ebx], 0x1d
jmp 0x403cb6
mov dword [ebp - 0x38], 0
mov dword [ebp - 0x30], 0
mov edi, dword [ebp - 0x2c]
mov dword [edi], 0x1c
mov ebx, 1
jmp 0x4057c2
mov ebx, 0xfffffffd
jmp 0x4057c2
mov dword [ebp - 0x30], esi
mov ebx, dword [ebp - 0x50]
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x34], edx
mov dword [ebp - 0x3c], eax
jmp 0x4057c2
mov dword [ebp - 0x30], esi
mov ebx, dword [ebp - 0x50]
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x3c], edx
jmp 0x4057c2
mov dword [ebp - 0x30], esi
mov ebx, dword [ebp - 0x50]
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x34], edx
mov dword [ebp - 0x3c], eax
jmp 0x4057c2
mov dword [ebp - 0x30], esi
mov ebx, dword [ebp - 0x50]
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x34], edx
mov dword [ebp - 0x3c], eax
jmp 0x4057c2
mov dword [ebp - 0x30], esi
mov ebx, dword [ebp - 0x50]
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x3c], edx
jmp 0x4057c2
mov ebx, dword [ebp - 0x50]
jmp 0x4057c2
mov ebx, dword [ebp - 0x50]
jmp 0x4057c2
mov ebx, dword [ebp - 0x50]
jmp 0x4057c2
mov dword [ebp - 0x30], esi
mov ebx, dword [ebp - 0x50]
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x34], edx
mov dword [ebp - 0x3c], eax
jmp 0x4057c2
mov dword [ebp - 0x30], esi
mov ebx, dword [ebp - 0x50]
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x3c], edx
jmp 0x4057c2
mov ebx, dword [ebp - 0x50]
jmp 0x4057c2
mov dword [ebp - 0x30], esi
mov ebx, dword [ebp - 0x50]
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x34], edx
mov dword [ebp - 0x3c], eax
jmp 0x4057c2
mov dword [ebp - 0x30], esi
mov ebx, dword [ebp - 0x50]
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x3c], edx
jmp 0x4057c2
mov ebx, dword [ebp - 0x50]
jmp 0x4057c2
mov dword [ebp - 0x30], esi
mov ebx, dword [ebp - 0x50]
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x3c], edx
jmp 0x4057c2
mov dword [ebp - 0x30], esi
mov ebx, dword [ebp - 0x50]
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x3c], edx
jmp 0x4057c2
mov dword [ebp - 0x30], esi
mov ebx, dword [ebp - 0x50]
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x3c], edx
jmp 0x4057c2
mov dword [ebp - 0x30], ebx
mov ebx, dword [ebp - 0x50]
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x3c], edx
jmp 0x4057c2
mov dword [ebp - 0x38], ebx
mov ebx, dword [ebp - 0x50]
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x3c], edx
jmp 0x4057c2
mov dword [ebp - 0x38], ebx
mov ebx, dword [ebp - 0x50]
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x3c], edx
jmp 0x4057c2
mov ebx, dword [ebp - 0x50]
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x3c], edx
jmp 0x4057c2
mov ebx, dword [ebp - 0x50]
jmp 0x4057c2
mov ebx, dword [ebp - 0x50]
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x34], edi
mov dword [ebp - 0x3c], edx
jmp 0x4057c2
mov dword [ebp - 0x38], ebx
mov ebx, dword [ebp - 0x50]
mov dword [ebp - 0x3c], edx
jmp 0x4057c2
mov dword [ebp - 0x30], ebx
mov ebx, dword [ebp - 0x50]
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x34], esi
mov dword [ebp - 0x3c], eax
jmp 0x4057c2
mov ebx, dword [ebp - 0x50]
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x3c], edx
jmp 0x4057c2
mov dword [ebp - 0x38], ebx
mov ebx, dword [ebp - 0x50]
mov dword [ebp - 0x34], edx
mov dword [ebp - 0x3c], esi
jmp 0x4057c2
mov dword [ebp - 0x30], ebx
mov ebx, dword [ebp - 0x50]
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x3c], esi
jmp 0x4057c2
mov ebx, dword [ebp - 0x50]
jmp 0x4057c2
mov ebx, dword [ebp - 0x50]
jmp 0x4057c2
mov dword [ebp - 0x30], esi
mov ebx, dword [ebp - 0x50]
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x3c], edx
jmp 0x4057c2
mov dword [ebp - 0x30], esi
mov ebx, dword [ebp - 0x50]
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x34], edx
mov dword [ebp - 0x3c], eax
mov edx, dword [ebp - 0x5c]
mov eax, dword [ebp + 8]
mov dword [eax + 0xc], edx
mov ecx, dword [ebp - 0x44]
mov dword [eax + 0x10], ecx
mov esi, dword [ebp - 0x3c]
mov dword [eax], esi
mov edi, dword [ebp - 0x34]
mov dword [eax + 4], edi
mov eax, dword [ebp - 0x30]
mov edx, dword [ebp - 0x2c]
mov dword [edx + 0x38], eax
mov ecx, dword [ebp - 0x38]
mov dword [edx + 0x3c], ecx
cmp dword [edx + 0x28], 0
jne 0x405801
cmp dword [edx], 0x19
ja 0x405823
mov edi, dword [ebp - 0x54]
mov esi, dword [ebp + 8]
cmp dword [esi + 0x10], edi
je 0x405823
mov edx, dword [ebp - 0x54]
mov eax, dword [ebp + 8]
call fcn.004039e1
test eax, eax
je 0x405823
mov eax, dword [ebp - 0x2c]
mov dword [eax], 0x1e
mov ebx, 0xfffffffc
jmp 0x4058ed
mov edi, dword [ebp - 0x58]
mov edx, dword [ebp + 8]
sub edi, dword [edx + 4]
mov esi, dword [ebp - 0x54]
sub esi, dword [edx + 0x10]
add dword [edx + 8], edi
add dword [edx + 0x14], esi
mov ecx, dword [ebp - 0x2c]
add dword [ecx + 0x1c], esi
cmp dword [ecx + 8], 0
je 0x405896
test esi, esi
je 0x405896
cmp dword [ecx + 0x10], 0
je 0x40586a
mov dword [esp + 8], esi
mov eax, esi
neg eax
add eax, dword [edx + 0xc]
mov dword [esp + 4], eax
mov eax, dword [ecx + 0x18]
mov dword [esp], eax
call fcn.0040648e
jmp 0x40588a
mov dword [esp + 8], esi
mov eax, esi
neg eax
mov edx, dword [ebp + 8]
add eax, dword [edx + 0xc]
mov dword [esp + 4], eax
mov ecx, dword [ebp - 0x2c]
mov eax, dword [ecx + 0x18]
mov dword [esp], eax
call fcn.0040689c
mov edx, dword [ebp - 0x2c]
mov dword [edx + 0x18], eax
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x30], eax
mov eax, dword [ebp - 0x2c]
cmp dword [eax + 4], 1
sbb eax, eax
not eax
and eax, 0x40
mov edx, dword [ebp - 0x2c]
add eax, dword [edx + 0x3c]
mov edx, dword [edx]
cmp edx, 0xb
je 0x4058fa
cmp edx, 0x13
je 0x4058c2
cmp edx, 0xe
je 0x4058c2
mov edx, 0
jmp 0x4058c7
mov edx, 0x100
add eax, edx
mov edx, dword [ebp + 8]
mov dword [edx + 0x2c], eax
test edi, edi
jne 0x4058d7
test esi, esi
je 0x4058dd
cmp dword [ebp + 0xc], 4
jne 0x4058ed
test ebx, ebx
jne 0x4058ed
mov ebx, 0xfffffffb
jmp 0x4058ed
mov ebx, 0xfffffffe
mov eax, ebx
add esp, 0xac
pop ebx
pop esi
pop edi
leave
ret
sub eax, 0xffffff80
mov edx, 0
jmp 0x4058c7