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

Disassembly:
sub esp, 0x44
push ebx
push ebp
push esi
mov esi, ecx
push edi
mov dword [esp + 0x30], esi
call fcn.00435da8
test eax, eax
jne case.default.0x4360b0
mov eax, dword [esi + 0xc]
mov dword [esp + 0x2c], eax
test eax, eax
je case.default.0x4360b0
mov eax, dword [esi]
mov dword [esp + 0x14], eax
test eax, eax
jne 0x436032
cmp dword [esi + 4], eax
jne case.default.0x4360b0
mov ebp, dword [esi + 0x1c]
mov edx, 0x3f40
mov ecx, dword [ebp + 4]
cmp ecx, 0x3f3f
jne 0x436057
mov dword [ebp + 4], edx
mov ecx, edx
mov eax, dword [esi + 0xc]
mov dword [esp + 0x2c], eax
mov eax, dword [esi]
mov dword [esp + 0x14], eax
mov eax, dword [esi + 0x10]
mov edi, dword [esi + 4]
mov edx, dword [ebp + 0x3c]
mov ebx, dword [ebp + 0x40]
mov dword [esp + 0x28], eax
mov dword [esp + 0x34], eax
xor eax, eax
mov dword [esp + 0x38], eax
lea eax, [ecx - 0x3f34]
mov dword [esp + 0x1c], edi
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], ebx
mov dword [esp + 0x44], edi
cmp eax, 0x1e
ja case.default.0x4360b0
mov dword [esp + 0x3c], 0x1f
mov dword [esp + 0x48], 0x3f51
mov dword [esp + 0x4c], 1
mov dword [esp + 0x50], 0x3f46
jmp dword [eax*4 + 0x437546]
mov eax, dword [ebp + 0xc]
test eax, eax
jne 0x4360ca
mov dword [ebp + 4], 0x3f40
jmp 0x4366dd
push 0x10
pop ecx
cmp ebx, ecx
jae 0x436107
mov eax, dword [esp + 0x14]
test edi, edi
je 0x437439
movzx eax, byte [eax]
mov ecx, ebx
shl eax, cl
dec edi
add edx, eax
mov dword [esp + 0x1c], edi
mov eax, dword [esp + 0x14]
add ebx, 8
inc eax
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], eax
mov dword [esp + 0x20], ebx
cmp ebx, 0x10
jb 0x4360d5
mov eax, dword [ebp + 0xc]
test al, 2
je 0x436164
cmp edx, 0x8b1f
jne 0x436164
xor ebx, ebx
cmp dword [ebp + 0x28], ebx
jne 0x436121
mov dword [ebp + 0x28], 0xf
push ebx
xor edx, edx
xor ecx, ecx
call fcn.00438076
mov dword [ebp + 0x1c], eax
lea edx, [esp + 0x28]
mov eax, dword [esp + 0x40]
mov byte [esp + 0x28], al
mov byte [esp + 0x29], 0x8b
mov ecx, dword [ebp + 0x1c]
push 2
call fcn.00438076
pop ecx
mov edx, ebx
mov dword [ebp + 0x1c], eax
pop ecx
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], ebx
mov dword [ebp + 4], 0x3f35
jmp 0x4366dd
and dword [ebp + 0x14], 0
mov ecx, dword [ebp + 0x24]
test ecx, ecx
je 0x436176
or dword [ecx + 0x30], 0xffffffff
mov eax, dword [ebp + 0xc]
test al, 1
je 0x436221
movzx ecx, dl
mov eax, edx
shr eax, 8
xor edx, edx
shl ecx, 8
add eax, ecx
div dword [esp + 0x3c]
test edx, edx
mov edx, dword [esp + 0x18]
jne 0x436221
mov eax, edx
and al, 0xf
cmp al, 8
je 0x4361ae
mov dword [esi + 0x18], str.unknown_compression_method
jmp 0x436228
mov eax, dword [ebp + 0x28]
sub ebx, 4
shr edx, 4
mov ecx, edx
mov dword [esp + 0x18], edx
and ecx, 0xf
mov dword [esp + 0x20], ebx
add ecx, 8
test eax, eax
jne 0x4361d0
mov dword [ebp + 0x28], ecx
mov eax, ecx
cmp ecx, 0xf
ja 0x436218
cmp ecx, eax
ja 0x436218
xor eax, eax
xor ebx, ebx
inc eax
xor edx, edx
shl eax, cl
xor ecx, ecx
push ebx
mov dword [ebp + 0x18], eax
call fcn.00437616
mov edx, dword [esp + 0x1c]
shr edx, 8
not edx
mov dword [ebp + 0x1c], eax
and edx, 2
mov dword [esi + 0x30], eax
or edx, 0x3f3d
mov dword [ebp + 4], edx
mov edx, ebx
pop ecx
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], ebx
jmp 0x4366dd
mov dword [esi + 0x18], str.invalid_window_size
jmp 0x436228
mov dword [esi + 0x18], str.incorrect_header_check
mov dword [ebp + 4], 0x3f51
jmp 0x4366dd
push 0x10
pop eax
cmp ebx, eax
jae 0x436270
mov eax, dword [esp + 0x14]
test edi, edi
je 0x437439
movzx eax, byte [eax]
mov ecx, ebx
shl eax, cl
dec edi
add edx, eax
mov dword [esp + 0x1c], edi
mov eax, dword [esp + 0x14]
add ebx, 8
push 0x10
inc eax
mov dword [esp + 0x1c], edx
pop ecx
mov dword [esp + 0x14], eax
mov dword [esp + 0x20], ebx
cmp ebx, ecx
jb 0x43623f
mov dword [ebp + 0x14], edx
cmp dl, 8
jne 0x4361a5
test edx, 0xe000
je 0x43628d
mov dword [esi + 0x18], str.unknown_header_flags_set
jmp 0x436228
mov edi, dword [ebp + 0x24]
mov ecx, edx
shr ecx, 8
mov eax, edx
test edi, edi
je 0x4362a5
mov eax, ecx
and eax, 1
mov dword [edi], eax
mov eax, dword [ebp + 0x14]
test eax, 0x200
je 0x4362cc
test byte [ebp + 0xc], 4
je 0x4362cc
mov byte [esp + 0x24], dl
lea edx, [esp + 0x24]
mov byte [esp + 0x25], cl
mov ecx, dword [ebp + 0x1c]
push 2
call fcn.00438076
pop ecx
mov dword [ebp + 0x1c], eax
mov edi, dword [esp + 0x1c]
xor eax, eax
mov edx, eax
mov dword [ebp + 4], 0x3f36
mov dword [esp + 0x18], edx
mov ebx, eax
cmp ebx, 0x20
jae 0x436315
mov eax, dword [esp + 0x14]
test edi, edi
je 0x437439
movzx eax, byte [eax]
mov ecx, ebx
shl eax, cl
dec edi
add edx, eax
mov dword [esp + 0x1c], edi
mov eax, dword [esp + 0x14]
add ebx, 8
inc eax
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], eax
cmp ebx, 0x20
jb 0x4362ea
mov eax, dword [ebp + 0x24]
test eax, eax
je 0x43631f
mov dword [eax + 4], edx
test dword [ebp + 0x14], 0x200
je 0x43635d
test byte [ebp + 0xc], 4
je 0x43635d
mov eax, edx
mov byte [esp + 0x24], dl
shr eax, 8
mov byte [esp + 0x25], al
mov eax, edx
shr edx, 0x18
shr eax, 0x10
mov byte [esp + 0x27], dl
lea edx, [esp + 0x24]
mov byte [esp + 0x26], al
mov ecx, dword [ebp + 0x1c]
push 4
call fcn.00438076
pop ecx
mov dword [ebp + 0x1c], eax
xor eax, eax
mov dword [ebp + 4], 0x3f37
mov edx, eax
mov ebx, eax
mov dword [esp + 0x18], edx
push 0x10
pop eax
cmp ebx, eax
jae 0x4363a6
mov eax, dword [esp + 0x14]
test edi, edi
je 0x437439
movzx eax, byte [eax]
mov ecx, ebx
shl eax, cl
dec edi
add edx, eax
mov dword [esp + 0x1c], edi
mov eax, dword [esp + 0x14]
add ebx, 8
push 0x10
inc eax
mov dword [esp + 0x1c], edx
pop ecx
mov dword [esp + 0x14], eax
cmp ebx, ecx
jb 0x436379
mov edi, dword [ebp + 0x24]
mov ecx, edx
shr ecx, 8
test edi, edi
je 0x4363be
movzx eax, dl
mov dword [edi + 8], eax
mov eax, dword [ebp + 0x24]
mov dword [eax + 0xc], ecx
test dword [ebp + 0x14], 0x200
je 0x4363e7
test byte [ebp + 0xc], 4
je 0x4363e7
mov byte [esp + 0x24], dl
lea edx, [esp + 0x24]
mov byte [esp + 0x25], cl
mov ecx, dword [ebp + 0x1c]
push 2
call fcn.00438076
pop ecx
mov dword [ebp + 0x1c], eax
mov edi, dword [esp + 0x1c]
xor ecx, ecx
mov edx, ecx
mov dword [ebp + 4], 0x3f38
mov ebx, ecx
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], ebx
jmp 0x436404
xor ecx, ecx
test dword [ebp + 0x14], 0x400
je 0x43648c
push 0x10
pop eax
cmp ebx, eax
jae 0x436445
mov eax, dword [esp + 0x14]
test edi, edi
je 0x437439
movzx eax, byte [eax]
mov ecx, ebx
shl eax, cl
dec edi
add edx, eax
mov dword [esp + 0x1c], edi
mov eax, dword [esp + 0x14]
add ebx, 8
push 0x10
inc eax
mov dword [esp + 0x1c], edx
pop ecx
mov dword [esp + 0x14], eax
cmp ebx, ecx
jb 0x436418
mov eax, dword [ebp + 0x24]
mov dword [ebp + 0x44], edx
test eax, eax
je 0x436452
mov dword [eax + 0x14], edx
test dword [ebp + 0x14], 0x200
je 0x43647e
test byte [ebp + 0xc], 4
je 0x43647e
mov byte [esp + 0x24], dl
shr edx, 8
mov byte [esp + 0x25], dl
lea edx, [esp + 0x24]
mov ecx, dword [ebp + 0x1c]
push 2
call fcn.00438076
pop ecx
mov dword [ebp + 0x1c], eax
xor eax, eax
mov ebx, eax
mov dword [esp + 0x18], eax
mov dword [esp + 0x20], ebx
jmp 0x436496
mov eax, dword [ebp + 0x24]
test eax, eax
je 0x436496
mov dword [eax + 0x10], ecx
mov dword [ebp + 4], 0x3f39
mov eax, dword [ebp + 0x14]
test eax, 0x400
je 0x436532
mov ecx, dword [ebp + 0x44]
cmp ecx, dword [esp + 0x1c]
cmovbe edi, ecx
test edi, edi
je 0x43652a
mov edx, dword [ebp + 0x24]
test edx, edx
je 0x4364fe
mov esi, dword [edx + 0x10]
test esi, esi
mov dword [esp + 0x40], esi
mov esi, dword [esp + 0x30]
je 0x4364fe
mov edx, dword [edx + 0x14]
sub edx, ecx
mov ecx, dword [ebp + 0x24]
mov ecx, dword [ecx + 0x18]
lea eax, [edi + edx]
cmp eax, ecx
jbe 0x4364e5
sub ecx, edx
jmp 0x4364e7
mov ecx, edi
mov eax, dword [esp + 0x40]
push ecx
push dword [esp + 0x18]
add eax, edx
push eax
call fcn.0043bbb0
mov eax, dword [ebp + 0x14]
add esp, 0xc
test eax, 0x200
je 0x43651c
test byte [ebp + 0xc], 4
je 0x43651c
mov edx, dword [esp + 0x14]
mov ecx, dword [ebp + 0x1c]
push edi
call fcn.00438076
pop ecx
mov dword [ebp + 0x1c], eax
sub dword [esp + 0x1c], edi
add dword [esp + 0x14], edi
sub dword [ebp + 0x44], edi
mov ecx, dword [ebp + 0x44]
test ecx, ecx
jne 0x437439
mov edi, dword [esp + 0x1c]
xor ecx, ecx
mov dword [ebp + 0x44], ecx
mov dword [ebp + 4], 0x3f3a
jmp 0x436546
xor ecx, ecx
test dword [ebp + 0x14], 0x800
je 0x4365d3
test edi, edi
je 0x437439
mov esi, dword [esp + 0x1c]
mov edi, ecx
mov edx, dword [esp + 0x14]
mov al, byte [edi + edx]
inc edi
mov byte [esp + 0x13], al
mov eax, dword [ebp + 0x24]
test eax, eax
je 0x436591
mov edx, dword [eax + 0x1c]
test edx, edx
je 0x43658d
mov ecx, dword [ebp + 0x44]
cmp ecx, dword [eax + 0x20]
jae 0x43658d
mov al, byte [esp + 0x13]
mov byte [ecx + edx], al
inc dword [ebp + 0x44]
mov edx, dword [esp + 0x14]
mov cl, byte [esp + 0x13]
test cl, cl
je 0x43659d
cmp edi, esi
jb 0x436565
test dword [ebp + 0x14], 0x200
mov esi, dword [esp + 0x30]
je 0x4365c1
test byte [ebp + 0xc], 4
je 0x4365c1
mov ecx, dword [ebp + 0x1c]
push edi
call fcn.00438076
pop ecx
mov cl, byte [esp + 0x13]
mov dword [ebp + 0x1c], eax
sub dword [esp + 0x1c], edi
add dword [esp + 0x14], edi
test cl, cl
jne 0x437439
jmp 0x4365dd
mov eax, dword [ebp + 0x24]
test eax, eax
je 0x4365dd
mov dword [eax + 0x1c], ecx
mov edi, dword [esp + 0x1c]
xor ecx, ecx
mov dword [ebp + 0x44], ecx
mov dword [ebp + 4], 0x3f3b
jmp 0x4365f1
xor ecx, ecx
test dword [ebp + 0x14], 0x1000
je 0x43667e
test edi, edi
je 0x437439
mov esi, dword [esp + 0x1c]
mov edi, ecx
mov edx, dword [esp + 0x14]
mov al, byte [edi + edx]
inc edi
mov byte [esp + 0x13], al
mov eax, dword [ebp + 0x24]
test eax, eax
je 0x43663c
mov edx, dword [eax + 0x24]
test edx, edx
je 0x436638
mov ecx, dword [ebp + 0x44]
cmp ecx, dword [eax + 0x28]
jae 0x436638
mov al, byte [esp + 0x13]
mov byte [ecx + edx], al
inc dword [ebp + 0x44]
mov edx, dword [esp + 0x14]
mov cl, byte [esp + 0x13]
test cl, cl
je 0x436648
cmp edi, esi
jb 0x436610
test dword [ebp + 0x14], 0x200
mov esi, dword [esp + 0x30]
je 0x43666c
test byte [ebp + 0xc], 4
je 0x43666c
mov ecx, dword [ebp + 0x1c]
push edi
call fcn.00438076
pop ecx
mov cl, byte [esp + 0x13]
mov dword [ebp + 0x1c], eax
sub dword [esp + 0x1c], edi
add dword [esp + 0x14], edi
test cl, cl
jne 0x437439
jmp 0x436688
mov eax, dword [ebp + 0x24]
test eax, eax
je 0x436688
mov dword [eax + 0x24], ecx
mov edx, dword [esp + 0x18]
mov dword [ebp + 4], 0x3f3c
mov edi, dword [ebp + 0x14]
test edi, 0x200
jne 0x436727
xor ecx, ecx
mov eax, dword [ebp + 0x24]
test eax, eax
je 0x4366bd
mov edx, dword [esp + 0x4c]
sar edi, 9
and edi, edx
mov dword [eax + 0x2c], edi
mov eax, dword [ebp + 0x24]
mov dword [eax + 0x30], edx
push ecx
xor edx, edx
xor ecx, ecx
call fcn.00438076
mov dword [ebp + 0x1c], eax
mov dword [esi + 0x30], eax
pop ecx
mov dword [ebp + 4], 0x3f3f
mov edx, dword [esp + 0x18]
mov edi, dword [esp + 0x1c]
mov ecx, dword [ebp + 4]
lea eax, [ecx - 0x3f34]
cmp eax, 0x1e
jbe switch.0x004360b0
push 0xfffffffffffffffe
pop eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x44
ret
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x437439
dec eax
mov ecx, ebx
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x14]
movzx eax, byte [eax]
shl eax, cl
add edx, eax
inc dword [esp + 0x14]
add ebx, 8
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], ebx
push 0x10
pop eax
cmp ebx, eax
jb 0x4366fa
test byte [ebp + 0xc], 4
je 0x43674c
movzx eax, word [ebp + 0x1c]
cmp edx, eax
je 0x43674c
mov dword [esi + 0x18], str.header_crc_mismatch
mov dword [ebp + 4], 0x3f51
jmp 0x4366d9
xor ecx, ecx
mov ebx, ecx
mov dword [esp + 0x18], ecx
mov dword [esp + 0x20], ebx
jmp 0x4366a4
cmp ebx, 0x20
jae 0x436791
mov ecx, dword [esp + 0x14]
test edi, edi
je 0x437439
movzx eax, byte [ecx]
dec edi
mov ecx, ebx
mov dword [esp + 0x1c], edi
shl eax, cl
add ebx, 8
mov ecx, dword [esp + 0x14]
add edx, eax
inc ecx
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], ecx
cmp ebx, 0x20
jb 0x436766
mov ecx, edx
mov ebx, 0xff00
mov eax, edx
and ecx, ebx
shl eax, 0x10
add ecx, eax
mov eax, edx
shr eax, 8
and eax, ebx
shl ecx, 8
shr edx, 0x18
add eax, ecx
add eax, edx
mov dword [ebp + 0x1c], eax
mov dword [esi + 0x30], eax
xor eax, eax
mov edx, eax
mov dword [ebp + 4], 0x3f3e
mov dword [esp + 0x18], edx
mov ebx, eax
jmp 0x4367cd
xor eax, eax
cmp dword [ebp + 0x10], eax
je 0x4373fc
push eax
xor edx, edx
xor ecx, ecx
call fcn.00437616
mov edx, dword [esp + 0x1c]
mov dword [ebp + 0x1c], eax
mov dword [esi + 0x30], eax
pop ecx
mov dword [ebp + 4], 0x3f3f
cmp dword [ebp + 8], 0
je 0x436815
mov ecx, ebx
mov dword [ebp + 4], 0x3f4e
and ecx, 7
shr edx, cl
sub ebx, ecx
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], ebx
jmp 0x4366dd
cmp ebx, 3
jae 0x436849
mov ecx, dword [esp + 0x14]
test edi, edi
je 0x437439
movzx eax, byte [ecx]
dec edi
mov ecx, ebx
mov dword [esp + 0x1c], edi
shl eax, cl
add ebx, 8
mov ecx, dword [esp + 0x14]
add edx, eax
inc ecx
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], ecx
cmp ebx, 3
jb 0x43681e
mov eax, edx
shr edx, 1
and eax, 1
mov dword [ebp + 8], eax
mov eax, edx
and eax, 3
sub eax, 0
je 0x4368aa
sub eax, 1
je 0x436885
sub eax, 1
je 0x43687c
sub eax, 1
jne 0x4368b1
mov dword [esi + 0x18], str.invalid_block_type
mov dword [ebp + 4], 0x3f51
jmp 0x4368b1
mov dword [ebp + 4], 0x3f44
jmp 0x4368b1
mov dword [ebp + 0x50], 0x473b80
mov dword [ebp + 0x58], 9
mov dword [ebp + 0x54], 0x474380
mov dword [ebp + 0x5c], 5
mov dword [ebp + 4], 0x3f47
jmp 0x4368b1
mov dword [ebp + 4], 0x3f41
shr edx, 2
sub ebx, 3
jmp 0x43620b
mov ecx, ebx
and ecx, 7
sub ebx, ecx
shr edx, cl
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], ebx
cmp ebx, 0x20
jae 0x436905
mov ecx, dword [esp + 0x14]
test edi, edi
je 0x437439
movzx eax, byte [ecx]
dec edi
mov ecx, ebx
mov dword [esp + 0x1c], edi
shl eax, cl
add ebx, 8
mov ecx, dword [esp + 0x14]
add edx, eax
inc ecx
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], ecx
mov dword [esp + 0x20], ebx
cmp ebx, 0x20
jb 0x4368d6
mov eax, edx
movzx ecx, dx
not eax
shr eax, 0x10
cmp ecx, eax
je 0x43691f
mov dword [esi + 0x18], str.invalid_stored_block_lengths
jmp 0x436228
xor eax, eax
mov dword [ebp + 0x44], ecx
mov edx, eax
mov ebx, eax
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], ebx
mov dword [ebp + 4], 0x3f43
mov ecx, dword [ebp + 0x44]
test ecx, ecx
je 0x436980
cmp ecx, edi
mov eax, edi
mov edi, dword [esp + 0x28]
cmovbe eax, ecx
cmp eax, edi
cmovbe edi, eax
test edi, edi
je 0x437439
mov ecx, dword [esp + 0x2c]
push edi
push dword [esp + 0x18]
push ecx
call fcn.0043bbb0
sub dword [esp + 0x28], edi
add esp, 0xc
add dword [esp + 0x14], edi
sub dword [esp + 0x28], edi
add dword [esp + 0x2c], edi
sub dword [ebp + 0x44], edi
jmp 0x4366d5
mov dword [ebp + 4], 0x3f3f
jmp 0x4366dd
cmp ebx, 0xe
jae 0x4369c0
mov ecx, dword [esp + 0x14]
test edi, edi
je 0x437439
movzx eax, byte [ecx]
dec edi
mov ecx, ebx
mov dword [esp + 0x1c], edi
shl eax, cl
add ebx, 8
mov ecx, dword [esp + 0x14]
add edx, eax
inc ecx
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], ecx
cmp ebx, 0xe
jb 0x436995
mov edi, dword [esp + 0x3c]
mov ecx, edx
shr edx, 5
and ecx, edi
and edi, edx
add ecx, 0x101
shr edx, 5
inc edi
mov eax, edx
mov dword [ebp + 0x64], ecx
and eax, 0xf
shr edx, 4
add eax, 4
mov dword [ebp + 0x68], edi
sub ebx, 0xe
mov dword [ebp + 0x60], eax
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], ebx
cmp ecx, 0x11e
ja 0x436a14
cmp edi, 0x1e
ja 0x436a14
and dword [ebp + 0x6c], 0
mov edi, dword [esp + 0x1c]
mov dword [ebp + 4], 0x3f45
jmp case.0x4360b0.16197
mov dword [esi + 0x18], str.too_many_length_or_distance_symbols
jmp 0x436743
cmp ebx, 3
jae 0x436a54
mov ecx, dword [esp + 0x14]
test edi, edi
je 0x437439
movzx eax, byte [ecx]
dec edi
mov ecx, ebx
mov dword [esp + 0x1c], edi
shl eax, cl
add ebx, 8
mov ecx, dword [esp + 0x14]
add edx, eax
inc ecx
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], ecx
cmp ebx, 3
jb 0x436a29
mov eax, dword [ebp + 0x6c]
mov ecx, edx
and ecx, 7
shr edx, 3
mov dword [esp + 0x18], edx
movzx eax, word [eax*2 + 0x474400]
mov word [ebp + eax*2 + 0x74], cx
inc dword [ebp + 0x6c]
sub ebx, 3
mov dword [esp + 0x20], ebx
mov eax, dword [ebp + 0x6c]
cmp eax, dword [ebp + 0x60]
jb 0x436a20
cmp eax, 0x13
jae 0x436aa2
mov eax, dword [ebp + 0x6c]
xor ecx, ecx
movzx eax, word [eax*2 + 0x474400]
mov word [ebp + eax*2 + 0x74], cx
inc dword [ebp + 0x6c]
cmp dword [ebp + 0x6c], 0x13
jb 0x436a87
lea eax, [ebp + 0x534]
lea edx, [ebp + 0x70]
mov dword [ebp + 0x50], eax
mov dword [edx], eax
lea ecx, [ebp + 0x58]
lea eax, [ebp + 0x2f4]
mov dword [ecx], 7
push eax
push ecx
push edx
push 0x13
lea edx, [ebp + 0x74]
xor ecx, ecx
call fcn.00437843
mov edx, dword [esp + 0x28]
add esp, 0x10
mov dword [esp + 0x38], eax
test eax, eax
je 0x436ae9
mov dword [esi + 0x18], str.invalid_code_lengths_set
jmp 0x436228
mov eax, dword [esp + 0x50]
mov ecx, eax
and dword [ebp + 0x6c], 0
mov dword [ebp + 4], eax
mov eax, dword [ebp + 0x68]
add eax, dword [ebp + 0x64]
cmp dword [ebp + 0x6c], eax
jae 0x436d0c
mov ecx, dword [ebp + 0x58]
xor eax, eax
lea edi, [eax + 1]
shl edi, cl
jmp 0x436b3a
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x437439
dec eax
mov ecx, ebx
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x14]
movzx eax, byte [eax]
shl eax, cl
add edx, eax
inc dword [esp + 0x14]
mov dword [esp + 0x18], edx
add ebx, 8
mov ecx, dword [ebp + 0x50]
lea eax, [edi - 1]
and eax, edx
mov eax, dword [ecx + eax*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
mov dword [esp + 0x40], eax
cmp ecx, ebx
ja 0x436b11
mov edi, eax
push 0x10
shr edi, 0x10
pop ecx
cmp di, cx
jae 0x436b87
shr eax, 8
movzx ecx, al
mov eax, dword [ebp + 0x6c]
sub ebx, ecx
shr edx, cl
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], ebx
mov word [ebp + eax*2 + 0x74], di
inc dword [ebp + 0x6c]
mov ecx, dword [ebp + 0x6c]
jmp 0x436cdf
jne 0x436bfd
mov ecx, eax
shr ecx, 8
movzx edi, cl
add edi, 2
cmp ebx, edi
jae 0x436bc7
mov ecx, dword [esp + 0x1c]
test ecx, ecx
je 0x437439
dec ecx
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x14]
movzx edx, byte [ecx]
mov ecx, ebx
shl edx, cl
add ebx, 8
add dword [esp + 0x18], edx
inc dword [esp + 0x14]
cmp ebx, edi
jb 0x436b98
mov edx, dword [esp + 0x18]
movzx ecx, ah
mov eax, dword [ebp + 0x6c]
sub ebx, ecx
shr edx, cl
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], ebx
test eax, eax
je 0x436cf2
movzx eax, word [ebp + eax*2 + 0x72]
mov edi, edx
and edi, 3
shr edx, 2
add edi, 3
mov dword [esp + 0x40], eax
sub ebx, 2
jmp 0x436caa
cmp word [esp + 0x42], 0x11
movzx ecx, ah
jne 0x436c55
lea edi, [ecx + 3]
mov dword [esp + 0x40], ecx
cmp ebx, edi
jae 0x436c44
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x437439
dec eax
mov ecx, ebx
mov dword [esp + 0x1c], eax
add ebx, 8
mov eax, dword [esp + 0x14]
movzx eax, byte [eax]
shl eax, cl
add edx, eax
inc dword [esp + 0x14]
mov dword [esp + 0x18], edx
cmp ebx, edi
jb 0x436c13
mov ecx, dword [esp + 0x40]
shr edx, cl
mov edi, edx
and edi, 7
add edi, 3
shr edx, 3
push 0xfffffffffffffffd
jmp 0x436ca0
lea edi, [ecx + 7]
mov dword [esp + 0x40], ecx
cmp ebx, edi
jae 0x436c91
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x437439
dec eax
mov ecx, ebx
mov dword [esp + 0x1c], eax
add ebx, 8
mov eax, dword [esp + 0x14]
movzx eax, byte [eax]
shl eax, cl
add edx, eax
inc dword [esp + 0x14]
mov dword [esp + 0x18], edx
cmp ebx, edi
jb 0x436c60
mov ecx, dword [esp + 0x40]
shr edx, cl
mov edi, edx
and edi, 0x7f
add edi, 0xb
shr edx, 7
push 0xfffffffffffffff9
pop eax
sub eax, ecx
add ebx, eax
and dword [esp + 0x40], 0
mov ecx, dword [ebp + 0x6c]
mov eax, dword [ebp + 0x68]
add ecx, edi
add eax, dword [ebp + 0x64]
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], ebx
cmp ecx, eax
ja 0x436cfe
mov esi, dword [esp + 0x40]
mov eax, dword [ebp + 0x6c]
mov word [ebp + eax*2 + 0x74], si
mov ecx, dword [ebp + 0x6c]
lea ecx, [ecx + 1]
mov dword [ebp + 0x6c], ecx
sub edi, 1
jne 0x436cc5
mov esi, dword [esp + 0x30]
mov eax, dword [ebp + 0x68]
add eax, dword [ebp + 0x64]
cmp ecx, eax
jb 0x436b05
mov ecx, dword [ebp + 4]
jmp 0x436d0c
mov dword [esi + 0x18], str.invalid_bit_length_repeat
jmp 0x436743
mov ecx, dword [esp + 0x48]
mov dword [esi + 0x18], str.invalid_bit_length_repeat
mov dword [ebp + 4], ecx
mov edi, dword [esp + 0x48]
cmp ecx, edi
je 0x4366d9
xor eax, eax
cmp word [ebp + 0x274], ax
jne 0x436d32
mov dword [esi + 0x18], str.invalid_code____missing_end_of_block
mov dword [ebp + 4], edi
jmp 0x4366d9
lea eax, [ebp + 0x534]
lea edi, [ebp + 0x70]
mov dword [ebp + 0x50], eax
lea ecx, [ebp + 0x2f4]
mov dword [edi], eax
push ecx
lea eax, [ebp + 0x58]
xor ecx, ecx
push eax
push edi
push dword [ebp + 0x64]
lea edx, [ebp + 0x74]
mov dword [eax], 9
inc ecx
call fcn.00437843
add esp, 0x10
mov dword [esp + 0x38], eax
test eax, eax
je 0x436d7e
mov dword [esi + 0x18], str.invalid_literal_lengths_set
mov dword [ebp + 4], 0x3f51
jmp 0x4366d5
mov eax, dword [edi]
lea ecx, [ebp + 0x2f4]
push ecx
mov dword [ebp + 0x54], eax
lea eax, [ebp + 0x5c]
push eax
mov dword [eax], 6
mov eax, dword [ebp + 0x64]
push edi
push dword [ebp + 0x68]
lea edx, [eax*2 + 0x74]
push 2
add edx, ebp
pop ecx
call fcn.00437843
mov edx, dword [esp + 0x28]
add esp, 0x10
mov edi, dword [esp + 0x1c]
mov dword [esp + 0x38], eax
test eax, eax
je case.0x4360b0.16199
mov dword [esi + 0x18], str.invalid_distances_set
jmp 0x436228
mov dword [ebp + 4], 0x3f48
cmp edi, 6
jb 0x436e48
mov eax, dword [esp + 0x28]
cmp eax, 0x102
jb 0x436e48
mov ecx, dword [esp + 0x2c]
mov dword [esi + 0x10], eax
mov eax, dword [esp + 0x14]
mov dword [esi + 0xc], ecx
mov ecx, esi
mov dword [esi], eax
mov dword [esi + 4], edi
mov dword [ebp + 0x3c], edx
mov edx, dword [esp + 0x34]
mov dword [ebp + 0x40], ebx
call fcn.00437c58
cmp dword [ebp + 4], 0x3f3f
mov eax, dword [esi + 0xc]
mov edi, dword [esi + 4]
mov edx, dword [ebp + 0x3c]
mov ebx, dword [ebp + 0x40]
mov dword [esp + 0x2c], eax
mov eax, dword [esi + 0x10]
mov dword [esp + 0x28], eax
mov eax, dword [esi]
mov dword [esp + 0x14], eax
mov dword [esp + 0x1c], edi
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], ebx
jne 0x4366dd
or dword [ebp + 0x1bc8], 0xffffffff
jmp 0x4366dd
and dword [ebp + 0x1bc8], 0
xor eax, eax
mov ecx, dword [ebp + 0x58]
lea edi, [eax + 1]
shl edi, cl
jmp 0x436e88
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x437439
dec eax
mov ecx, ebx
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x14]
movzx eax, byte [eax]
shl eax, cl
add edx, eax
inc dword [esp + 0x14]
add ebx, 8
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], ebx
mov ecx, dword [ebp + 0x50]
lea eax, [edi - 1]
and eax, edx
mov eax, dword [ecx + eax*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
cmp ecx, ebx
ja 0x436e5b
test al, al
je 0x436f5e
test al, 0xf0
jne 0x436f5e
mov ebx, eax
movzx ecx, al
shr ebx, 8
xor edi, edi
movzx esi, bl
inc edi
add ecx, esi
mov edx, eax
shl edi, cl
mov ecx, esi
dec edi
shr eax, 0x10
and edi, dword [esp + 0x18]
shr edi, cl
mov ecx, dword [ebp + 0x50]
add edi, eax
mov dword [esp + 0x40], edx
mov eax, dword [ecx + edi*4]
mov ecx, eax
shr ecx, 8
movzx esi, cl
movzx ecx, bl
mov ebx, dword [esp + 0x20]
add esi, ecx
cmp esi, ebx
jbe 0x436f49
mov esi, dword [esp + 0x1c]
test esi, esi
je 0x437439
dec esi
movzx edi, dh
mov dword [esp + 0x1c], esi
mov ecx, ebx
mov esi, dword [esp + 0x14]
add ebx, 8
movzx eax, byte [esi]
shl eax, cl
add dword [esp + 0x18], eax
inc esi
movzx eax, word [esp + 0x42]
mov dword [esp + 0x14], esi
xor esi, esi
inc esi
movzx ecx, dl
add ecx, edi
shl esi, cl
mov ecx, edi
dec esi
and esi, dword [esp + 0x18]
shr esi, cl
add esi, eax
mov eax, dword [ebp + 0x50]
mov eax, dword [eax + esi*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
add ecx, edi
cmp ecx, ebx
ja 0x436ef0
mov esi, dword [esp + 0x30]
movzx ecx, dh
mov edx, dword [esp + 0x18]
shr edx, cl
sub ebx, ecx
mov dword [ebp + 0x1bc8], ecx
mov ecx, eax
shr ecx, 8
movzx ecx, cl
add dword [ebp + 0x1bc8], ecx
sub ebx, ecx
shr edx, cl
mov ecx, eax
shr ecx, 0x10
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], ebx
mov dword [ebp + 0x44], ecx
test al, al
jne 0x436f90
mov dword [ebp + 4], 0x3f4d
jmp 0x4366d9
test al, 0x20
je 0x436fa7
or dword [ebp + 0x1bc8], 0xffffffff
mov dword [ebp + 4], 0x3f3f
jmp 0x4366d9
mov edi, dword [esp + 0x1c]
test al, 0x40
je 0x436fbb
mov dword [esi + 0x18], str.invalid_literal_length_code
jmp 0x436228
movzx eax, al
and eax, 0xf
mov dword [ebp + 4], 0x3f49
mov dword [ebp + 0x4c], eax
mov esi, dword [ebp + 0x4c]
test esi, esi
je 0x437023
cmp ebx, esi
jae 0x437004
mov ecx, dword [esp + 0x14]
test edi, edi
je 0x437439
movzx eax, byte [ecx]
dec edi
mov ecx, ebx
mov dword [esp + 0x1c], edi
shl eax, cl
add ebx, 8
mov ecx, dword [esp + 0x14]
add edx, eax
inc ecx
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], ecx
cmp ebx, esi
jb 0x436fda
xor eax, eax
mov ecx, esi
inc eax
sub ebx, esi
shl eax, cl
dec eax
mov dword [esp + 0x20], ebx
and eax, edx
shr edx, cl
add dword [ebp + 0x44], eax
add dword [ebp + 0x1bc8], esi
mov dword [esp + 0x18], edx
mov eax, dword [ebp + 0x44]
mov dword [ebp + 0x1bcc], eax
mov dword [ebp + 4], 0x3f4a
mov ecx, dword [ebp + 0x5c]
xor eax, eax
mov edi, dword [ebp + 0x54]
lea esi, [eax + 1]
shl esi, cl
jmp 0x43706f
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x437439
dec eax
mov ecx, ebx
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x14]
movzx eax, byte [eax]
shl eax, cl
add edx, eax
inc dword [esp + 0x14]
add ebx, 8
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], ebx
lea eax, [esi - 1]
and eax, edx
mov eax, dword [edi + eax*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
cmp ecx, ebx
ja 0x437042
test al, 0xf0
jne 0x437136
mov ebx, eax
movzx ecx, al
shr ebx, 8
xor edi, edi
movzx esi, bl
inc edi
add ecx, esi
mov edx, eax
shl edi, cl
mov ecx, esi
dec edi
shr eax, 0x10
and edi, dword [esp + 0x18]
shr edi, cl
mov ecx, dword [ebp + 0x54]
add edi, eax
mov dword [esp + 0x40], edx
mov eax, dword [ecx + edi*4]
mov ecx, eax
shr ecx, 8
movzx esi, cl
movzx ecx, bl
mov ebx, dword [esp + 0x20]
add esi, ecx
cmp esi, ebx
jbe 0x437125
mov esi, dword [esp + 0x1c]
test esi, esi
je 0x437439
dec esi
movzx edi, dh
mov dword [esp + 0x1c], esi
mov ecx, ebx
mov esi, dword [esp + 0x14]
add ebx, 8
movzx eax, byte [esi]
shl eax, cl
add dword [esp + 0x18], eax
inc esi
movzx eax, word [esp + 0x42]
mov dword [esp + 0x14], esi
xor esi, esi
inc esi
movzx ecx, dl
add ecx, edi
shl esi, cl
mov ecx, edi
dec esi
and esi, dword [esp + 0x18]
shr esi, cl
add esi, eax
mov eax, dword [ebp + 0x54]
mov eax, dword [eax + esi*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
add ecx, edi
cmp ecx, ebx
ja 0x4370cc
movzx ecx, dh
mov edx, dword [esp + 0x18]
sub ebx, ecx
shr edx, cl
add dword [ebp + 0x1bc8], ecx
mov esi, dword [esp + 0x30]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
add dword [ebp + 0x1bc8], ecx
sub ebx, ecx
shr edx, cl
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], ebx
test al, 0x40
je 0x437164
mov dword [esi + 0x18], str.invalid_distance_code
jmp 0x436743
mov ecx, eax
mov dword [ebp + 4], 0x3f4b
shr ecx, 0x10
movzx eax, al
and eax, 0xf
mov dword [ebp + 0x48], ecx
mov dword [ebp + 0x4c], eax
mov edi, dword [ebp + 0x4c]
test edi, edi
je 0x4371d1
jmp 0x4371ae
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x437439
dec eax
mov ecx, ebx
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x14]
movzx eax, byte [eax]
shl eax, cl
add edx, eax
inc dword [esp + 0x14]
mov dword [esp + 0x18], edx
add ebx, 8
cmp ebx, edi
jb 0x437185
xor eax, eax
mov ecx, edi
inc eax
sub ebx, edi
shl eax, cl
dec eax
mov dword [esp + 0x20], ebx
and eax, edx
shr edx, cl
add dword [ebp + 0x48], eax
add dword [ebp + 0x1bc8], edi
mov dword [esp + 0x18], edx
mov edi, dword [esp + 0x1c]
mov dword [ebp + 4], 0x3f4c
mov eax, dword [esp + 0x28]
test eax, eax
je 0x437439
mov ecx, dword [esp + 0x34]
sub ecx, eax
mov eax, dword [ebp + 0x48]
cmp eax, ecx
jbe 0x43723f
sub eax, ecx
cmp eax, dword [ebp + 0x30]
jbe 0x437211
cmp dword [ebp + 0x1bc4], 0
je 0x437211
mov dword [esi + 0x18], str.invalid_distance_too_far_back
jmp 0x436228
cmp eax, dword [ebp + 0x34]
jbe 0x437223
sub eax, dword [ebp + 0x34]
mov ecx, dword [ebp + 0x2c]
sub ecx, eax
add ecx, dword [ebp + 0x38]
jmp 0x43722b
mov ecx, dword [ebp + 0x38]
sub ecx, eax
add ecx, dword [ebp + 0x34]
mov edi, dword [ebp + 0x44]
cmp eax, edi
mov edx, edi
cmovbe edx, eax
mov dword [esp + 0x40], edx
mov edx, dword [esp + 0x18]
jmp 0x43724c
mov ecx, dword [esp + 0x2c]
mov edi, dword [ebp + 0x44]
sub ecx, eax
mov dword [esp + 0x40], edi
mov esi, dword [esp + 0x28]
mov eax, esi
cmp dword [esp + 0x40], esi
cmovbe eax, dword [esp + 0x40]
sub esi, eax
mov dword [esp + 0x40], eax
sub edi, eax
mov dword [esp + 0x28], esi
mov esi, dword [esp + 0x2c]
sub ecx, esi
mov dword [ebp + 0x44], edi
mov edi, eax
mov al, byte [ecx + esi]
mov byte [esi], al
inc esi
sub edi, 1
jne 0x437272
cmp dword [ebp + 0x44], 0
mov edi, dword [esp + 0x1c]
mov dword [esp + 0x2c], esi
mov esi, dword [esp + 0x30]
jne 0x4366dd
mov dword [ebp + 4], 0x3f48
jmp 0x4366dd
cmp dword [esp + 0x28], 0
je 0x437439
mov ecx, dword [esp + 0x2c]
mov al, byte [ebp + 0x44]
mov byte [ecx], al
inc ecx
dec dword [esp + 0x28]
mov dword [esp + 0x2c], ecx
jmp 0x437293
cmp dword [ebp + 0xc], 0
je 0x4373a2
cmp ebx, 0x20
jae 0x437300
mov ecx, dword [esp + 0x14]
test edi, edi
je 0x437439
movzx eax, byte [ecx]
dec edi
mov ecx, ebx
mov dword [esp + 0x1c], edi
shl eax, cl
add ebx, 8
mov ecx, dword [esp + 0x14]
add edx, eax
inc ecx
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], ecx
mov dword [esp + 0x20], ebx
cmp ebx, 0x20
jb 0x4372d1
mov ecx, dword [esp + 0x34]
sub ecx, dword [esp + 0x28]
add dword [esi + 0x14], ecx
add dword [ebp + 0x20], ecx
mov eax, dword [ebp + 0xc]
mov dword [esp + 0x34], ecx
test al, 4
je 0x43734a
test ecx, ecx
je 0x43734a
mov edx, dword [esp + 0x2c]
push dword [esp + 0x34]
sub edx, ecx
cmp dword [ebp + 0x14], 0
mov ecx, dword [ebp + 0x1c]
je 0x437337
call fcn.00438076
jmp 0x43733c
call fcn.00437616
mov edx, dword [esp + 0x1c]
mov dword [ebp + 0x1c], eax
mov dword [esi + 0x30], eax
mov eax, dword [ebp + 0xc]
pop ecx
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x34], ecx
test al, 4
je 0x437394
mov ecx, edx
mov eax, edx
shl eax, 0x10
and ecx, 0xff00
add ecx, eax
mov eax, edx
shr eax, 8
and eax, 0xff00
shl ecx, 8
add ecx, eax
mov eax, edx
shr eax, 0x18
add ecx, eax
xor eax, eax
cmp dword [ebp + 0x14], eax
cmovne ecx, edx
cmp ecx, dword [ebp + 0x1c]
je 0x437396
mov dword [esi + 0x18], str.incorrect_data_check
jmp 0x436228
xor eax, eax
mov edx, eax
mov ebx, eax
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], ebx
mov dword [ebp + 4], 0x3f4f
xor eax, eax
cmp dword [ebp + 0xc], eax
je 0x437426
cmp dword [ebp + 0x14], eax
je 0x437426
cmp ebx, 0x20
jae 0x4373eb
mov ecx, dword [esp + 0x14]
test edi, edi
je 0x437439
movzx eax, byte [ecx]
dec edi
mov ecx, ebx
mov dword [esp + 0x1c], edi
shl eax, cl
add ebx, 8
mov ecx, dword [esp + 0x14]
add edx, eax
inc ecx
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], ecx
mov dword [esp + 0x20], ebx
cmp ebx, 0x20
jb 0x4373be
xor eax, eax
cmp edx, dword [ebp + 0x20]
je 0x437420
mov dword [esi + 0x18], str.incorrect_length_check
jmp 0x436228
mov eax, dword [esp + 0x2c]
mov dword [esi + 0xc], eax
mov eax, dword [esp + 0x28]
mov dword [esi + 0x10], eax
mov eax, dword [esp + 0x14]
mov dword [esi], eax
mov dword [esi + 4], edi
mov dword [ebp + 0x3c], edx
mov dword [ebp + 0x40], ebx
push 2
jmp 0x4366f1
mov dword [esp + 0x18], eax
mov ebx, eax
mov dword [ebp + 4], 0x3f50
xor eax, eax
inc eax
jmp 0x437435
push 0xfffffffffffffffd
pop eax
mov dword [esp + 0x38], eax
mov esi, dword [esp + 0x30]
mov eax, dword [esp + 0x2c]
mov edi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x14]
mov dword [esi + 0xc], eax
mov eax, dword [esp + 0x28]
mov dword [esi + 0x10], eax
mov eax, dword [esp + 0x18]
mov dword [esi + 4], edi
mov edi, dword [esp + 0x34]
mov dword [esi], ecx
mov dword [ebp + 0x40], ebx
xor ebx, ebx
mov dword [ebp + 0x3c], eax
cmp dword [ebp + 0x2c], ebx
jne 0x43747b
cmp edi, dword [esi + 0x10]
je 0x43749e
cmp dword [ebp + 4], 0x3f51
jge 0x43749e
mov edx, dword [esi + 0xc]
mov eax, edi
sub eax, dword [esi + 0x10]
mov ecx, esi
push eax
call fcn.00435f32
pop ecx
test eax, eax
je 0x43749e
mov dword [ebp + 4], 0x3f52
push 0xfffffffffffffffc
jmp 0x4366f1
mov edx, dword [esp + 0x44]
sub edx, dword [esi + 4]
sub edi, dword [esi + 0x10]
add dword [esi + 8], edx
add dword [esi + 0x14], edi
add dword [ebp + 0x20], edi
test byte [ebp + 0xc], 4
mov dword [esp + 0x44], edx
je 0x4374e4
test edi, edi
je 0x4374e4
mov edx, dword [esi + 0xc]
mov ecx, dword [ebp + 0x1c]
sub edx, edi
push edi
cmp dword [ebp + 0x14], ebx
je 0x4374d4
call fcn.00438076
jmp 0x4374d9
call fcn.00437616
mov edx, dword [esp + 0x48]
mov dword [ebp + 0x1c], eax
pop ecx
mov dword [esi + 0x30], eax
cmp dword [ebp + 4], 0x3f47
je 0x4374f6
cmp dword [ebp + 4], 0x3f42
jne 0x4374fb
mov ebx, 0x100
mov ecx, dword [ebp + 8]
neg ecx
mov dword [esp + 0x50], 0x80
sbb ecx, ecx
xor eax, eax
and ecx, 0x40
cmp dword [ebp + 4], 0x3f3f
cmove eax, dword [esp + 0x50]
add ecx, eax
mov eax, dword [esp + 0x38]
add ecx, dword [ebp + 0x40]
add ecx, ebx
mov dword [esi + 0x2c], ecx
test edx, edx
jne 0x4366f2
test edi, edi
jne 0x4366f2
push 0xfffffffffffffffb
test eax, eax
pop ecx
cmove eax, ecx
jmp 0x4366f2