Function at 0x408ad1
Capabilities:
Compute adler32 checksum

Disassembly:
push ebp
mov ebp, esp
push ebx
sub esp, 0x1b4
mov dword [ebp - 0xc], 0xffffffff
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x24], eax
mov eax, dword [ebp + 0x10]
mov edx, dword [eax]
mov eax, dword [ebp + 0xc]
add eax, edx
mov dword [ebp - 0xa0], eax
mov eax, dword [ebp + 0x18]
mov dword [ebp - 0x28], eax
cmp dword [ebp + 0x18], 0
je 0x4089c4
mov eax, dword [ebp + 0x1c]
mov edx, dword [eax]
mov eax, dword [ebp + 0x18]
add eax, edx
jmp 0x4089c9
mov eax, 0
mov dword [ebp - 0xa4], eax
mov eax, dword [ebp + 0x20]
and eax, 4
test eax, eax
jne 0x4089ed
mov eax, dword [ebp + 0x18]
sub eax, dword [ebp + 0x14]
mov edx, eax
mov eax, dword [ebp + 0x1c]
mov eax, dword [eax]
add eax, edx
sub eax, 1
jmp 0x4089f2
mov eax, 0xffffffff
mov dword [ebp - 0xa8], eax
mov eax, dword [ebp - 0xa8]
add eax, 1
and eax, dword [ebp - 0xa8]
test eax, eax
jne 0x408a13
mov eax, dword [ebp + 0x18]
cmp eax, dword [ebp + 0x14]
jae 0x408a30
mov eax, dword [ebp + 0x1c]
mov dword [eax], 0
mov eax, dword [ebp + 0x1c]
mov edx, dword [eax]
mov eax, dword [ebp + 0x10]
mov dword [eax], edx
mov eax, 0xfffffffd
jmp 0x40a8c8
mov eax, dword [ebp + 8]
add eax, 0x1840
mov dword [ebp - 0x114], eax
mov eax, dword [ebp + 8]
add eax, 0x1cc0
mov dword [ebp - 0x110], eax
mov eax, dword [ebp + 8]
add eax, 0x1d40
mov dword [ebp - 0x10c], eax
mov eax, dword [ebp + 8]
add eax, 0x1d8c
mov dword [ebp - 0x120], eax
mov eax, dword [ebp + 8]
add eax, 0x1eac
mov dword [ebp - 0x11c], eax
mov eax, dword [ebp + 8]
add eax, 0x1ecc
mov dword [ebp - 0x118], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 4]
mov dword [ebp - 0x10], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x38]
mov dword [ebp - 0x20], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x20]
mov dword [ebp - 0x14], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x24]
mov dword [ebp - 0x18], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x28]
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x3c]
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax]
cmp eax, 0x35
ja case.0x408acf.4
mov eax, dword [eax*4 + 0x422078]
jmp eax
mov eax, dword [ebp + 8]
mov dword [eax + 0xc], 0
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0xc]
mov eax, dword [ebp + 8]
mov dword [eax + 8], edx
mov eax, dword [ebp + 8]
mov eax, dword [eax + 8]
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x14]
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x20], eax
mov eax, dword [ebp + 8]
mov dword [eax + 0x1c], 1
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0x1c]
mov eax, dword [ebp + 8]
mov dword [eax + 0x10], edx
mov eax, dword [ebp + 0x20]
and eax, 1
test eax, eax
je 0x408c90
jmp case.0x408acf.1
mov eax, dword [ebp + 0x20]
and eax, 2
test eax, eax
je 0x408b3f
mov eax, 1
jmp 0x408b44
mov eax, 0xfffffffc
mov dword [ebp - 0xc], eax
mov eax, dword [ebp + 8]
mov dword [eax], 1
jmp case.0x408acf.4
mov eax, dword [ebp - 0x24]
cmp eax, dword [ebp - 0xa0]
jae 0x408b2e
mov eax, dword [ebp - 0x24]
lea edx, [eax + 1]
mov dword [ebp - 0x24], edx
movzx eax, byte [eax]
movzx edx, al
mov eax, dword [ebp + 8]
mov dword [eax + 8], edx
jmp case.0x408acf.2
mov eax, dword [ebp + 0x20]
and eax, 2
test eax, eax
je 0x408b88
mov eax, 1
jmp 0x408b8d
mov eax, 0xfffffffc
mov dword [ebp - 0xc], eax
mov eax, dword [ebp + 8]
mov dword [eax], 2
jmp case.0x408acf.4
mov eax, dword [ebp - 0x24]
cmp eax, dword [ebp - 0xa0]
jae 0x408b77
mov eax, dword [ebp - 0x24]
lea edx, [eax + 1]
mov dword [ebp - 0x24], edx
movzx eax, byte [eax]
movzx edx, al
mov eax, dword [ebp + 8]
mov dword [eax + 0xc], edx
mov eax, dword [ebp + 8]
mov eax, dword [eax + 8]
shl eax, 8
mov edx, eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0xc]
lea ecx, [edx + eax]
mov edx, 0x8421085
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
mov eax, ecx
sub eax, edx
test eax, eax
jne 0x408c10
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0xc]
and eax, 0x20
test eax, eax
jne 0x408c10
mov eax, dword [ebp + 8]
mov eax, dword [eax + 8]
and eax, 0xf
cmp eax, 8
je 0x408c17
mov eax, 1
jmp 0x408c1c
mov eax, 0
mov dword [ebp - 0x18], eax
mov eax, dword [ebp + 0x20]
and eax, 4
test eax, eax
jne 0x408c75
mov eax, dword [ebp + 8]
mov eax, dword [eax + 8]
shr eax, 4
add eax, 8
mov edx, 1
mov ecx, eax
shl edx, cl
mov eax, edx
cmp eax, 0x8000
ja 0x408c66
mov eax, dword [ebp - 0xa8]
lea edx, [eax + 1]
mov eax, dword [ebp + 8]
mov eax, dword [eax + 8]
shr eax, 4
add eax, 8
mov ecx, eax
shr edx, cl
mov eax, edx
test eax, eax
jne 0x408c6d
mov eax, 1
jmp 0x408c72
mov eax, 0
or dword [ebp - 0x18], eax
cmp dword [ebp - 0x18], 0
je 0x408c90
mov dword [ebp - 0xc], 0xffffffff
mov eax, dword [ebp + 8]
mov dword [eax], 0x24
jmp case.0x408acf.4
cmp dword [ebp - 0x10], 2
ja 0x408cfc
jmp 0x408cbf
mov eax, dword [ebp + 0x20]
and eax, 2
test eax, eax
je 0x408ca9
mov eax, 1
jmp 0x408cae
mov eax, 0xfffffffc
mov dword [ebp - 0xc], eax
mov eax, dword [ebp + 8]
mov dword [eax], 3
jmp case.0x408acf.4
nop
mov eax, dword [ebp - 0x24]
cmp eax, dword [ebp - 0xa0]
jae 0x408c98
mov eax, dword [ebp - 0x24]
lea edx, [eax + 1]
mov dword [ebp - 0x24], edx
movzx eax, byte [eax]
movzx eax, al
mov dword [ebp - 0xac], eax
mov eax, dword [ebp - 0x10]
mov edx, dword [ebp - 0xac]
mov ecx, eax
shl edx, cl
mov eax, edx
or dword [ebp - 0x20], eax
add dword [ebp - 0x10], 8
cmp dword [ebp - 0x10], 2
jbe 0x408cbf
mov eax, dword [ebp - 0x20]
and eax, 7
mov edx, eax
mov eax, dword [ebp + 8]
mov dword [eax + 0x14], edx
shr dword [ebp - 0x20], 3
sub dword [ebp - 0x10], 3
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x14]
shr eax, 1
mov edx, eax
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], edx
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x18]
test eax, eax
jne 0x4090a8
mov eax, dword [ebp - 0x10]
and eax, 7
cmp dword [ebp - 0x10], eax
jae 0x408da6
jmp 0x408d64
mov eax, dword [ebp + 0x20]
and eax, 2
test eax, eax
je 0x408d4e
mov eax, 1
jmp 0x408d53
mov eax, 0xfffffffc
mov dword [ebp - 0xc], eax
mov eax, dword [ebp + 8]
mov dword [eax], 5
jmp case.0x408acf.4
nop
mov eax, dword [ebp - 0x24]
cmp eax, dword [ebp - 0xa0]
jae 0x408d3d
mov eax, dword [ebp - 0x24]
lea edx, [eax + 1]
mov dword [ebp - 0x24], edx
movzx eax, byte [eax]
movzx eax, al
mov dword [ebp - 0xf4], eax
mov eax, dword [ebp - 0x10]
mov edx, dword [ebp - 0xf4]
mov ecx, eax
shl edx, cl
mov eax, edx
or dword [ebp - 0x20], eax
add dword [ebp - 0x10], 8
mov eax, dword [ebp - 0x10]
and eax, 7
cmp dword [ebp - 0x10], eax
jb 0x408d64
mov eax, dword [ebp - 0x10]
and eax, 7
mov ecx, eax
shr dword [ebp - 0x20], cl
and dword [ebp - 0x10], 0xfffffff8
mov dword [ebp - 0x18], 0
jmp 0x408ea8
cmp dword [ebp - 0x10], 0
je 0x408e7c
cmp dword [ebp - 0x10], 7
ja 0x408e37
jmp 0x408dfa
mov eax, dword [ebp + 0x20]
and eax, 2
test eax, eax
je 0x408de4
mov eax, 1
jmp 0x408de9
mov eax, 0xfffffffc
mov dword [ebp - 0xc], eax
mov eax, dword [ebp + 8]
mov dword [eax], 6
jmp case.0x408acf.4
nop
mov eax, dword [ebp - 0x24]
cmp eax, dword [ebp - 0xa0]
jae 0x408dd3
mov eax, dword [ebp - 0x24]
lea edx, [eax + 1]
mov dword [ebp - 0x24], edx
movzx eax, byte [eax]
movzx eax, al
mov dword [ebp - 0x108], eax
mov eax, dword [ebp - 0x10]
mov edx, dword [ebp - 0x108]
mov ecx, eax
shl edx, cl
mov eax, edx
or dword [ebp - 0x20], eax
add dword [ebp - 0x10], 8
cmp dword [ebp - 0x10], 7
jbe 0x408dfa
mov eax, dword [ebp - 0x20]
mov edx, eax
mov ecx, dword [ebp + 8]
mov eax, dword [ebp - 0x18]
add eax, ecx
add eax, 0x1edf
mov byte [eax], dl
shr dword [ebp - 0x20], 8
sub dword [ebp - 0x10], 8
jmp 0x408ea4
mov eax, dword [ebp + 0x20]
and eax, 2
test eax, eax
je 0x408e66
mov eax, 1
jmp 0x408e6b
mov eax, 0xfffffffc
mov dword [ebp - 0xc], eax
mov eax, dword [ebp + 8]
mov dword [eax], 7
jmp case.0x408acf.4
nop
mov eax, dword [ebp - 0x24]
cmp eax, dword [ebp - 0xa0]
jae 0x408e55
mov eax, dword [ebp - 0x24]
lea edx, [eax + 1]
mov dword [ebp - 0x24], edx
movzx eax, byte [eax]
mov ecx, dword [ebp + 8]
mov edx, dword [ebp - 0x18]
add edx, ecx
add edx, 0x1edf
mov byte [edx], al
add dword [ebp - 0x18], 1
cmp dword [ebp - 0x18], 3
jbe 0x408dc1
mov eax, dword [ebp + 8]
movzx eax, byte [eax + 0x1edf]
movzx edx, al
mov eax, dword [ebp + 8]
movzx eax, byte [eax + 0x1ee0]
movzx eax, al
shl eax, 8
or eax, edx
mov dword [ebp - 0x18], eax
mov eax, dword [ebp + 8]
movzx eax, byte [eax + 0x1ee1]
movzx edx, al
mov eax, dword [ebp + 8]
movzx eax, byte [eax + 0x1ee2]
movzx eax, al
shl eax, 8
or eax, edx
xor eax, 0xffff
cmp dword [ebp - 0x18], eax
je 0x408fc9
mov dword [ebp - 0xc], 0xffffffff
mov eax, dword [ebp + 8]
mov dword [eax], 0x27
jmp case.0x408acf.4
cmp dword [ebp - 0x10], 7
ja 0x408f82
jmp 0x408f45
mov eax, dword [ebp + 0x20]
and eax, 2
test eax, eax
je 0x408f2f
mov eax, 1
jmp 0x408f34
mov eax, 0xfffffffc
mov dword [ebp - 0xc], eax
mov eax, dword [ebp + 8]
mov dword [eax], 0x33
jmp case.0x408acf.4
nop
mov eax, dword [ebp - 0x24]
cmp eax, dword [ebp - 0xa0]
jae 0x408f1e
mov eax, dword [ebp - 0x24]
lea edx, [eax + 1]
mov dword [ebp - 0x24], edx
movzx eax, byte [eax]
movzx eax, al
mov dword [ebp - 0x104], eax
mov eax, dword [ebp - 0x10]
mov edx, dword [ebp - 0x104]
mov ecx, eax
shl edx, cl
mov eax, edx
or dword [ebp - 0x20], eax
add dword [ebp - 0x10], 8
cmp dword [ebp - 0x10], 7
jbe 0x408f45
mov eax, dword [ebp - 0x20]
movzx eax, al
mov dword [ebp - 0x14], eax
shr dword [ebp - 0x20], 8
sub dword [ebp - 0x10], 8
jmp case.0x408acf.52
mov dword [ebp - 0xc], 2
mov eax, dword [ebp + 8]
mov dword [eax], 0x34
jmp case.0x408acf.4
mov eax, dword [ebp - 0x28]
cmp eax, dword [ebp - 0xa4]
jae 0x408f95
mov eax, dword [ebp - 0x28]
lea edx, [eax + 1]
mov dword [ebp - 0x28], edx
mov edx, dword [ebp - 0x14]
mov byte [eax], dl
sub dword [ebp - 0x18], 1
jmp 0x408fca
nop
cmp dword [ebp - 0x18], 0
je 0x409098
cmp dword [ebp - 0x10], 0
jne 0x408f16
jmp 0x409098
mov dword [ebp - 0xc], 2
mov eax, dword [ebp + 8]
mov dword [eax], 9
jmp case.0x408acf.4
nop
mov eax, dword [ebp - 0x28]
cmp eax, dword [ebp - 0xa4]
jae 0x408fe3
jmp case.0x408acf.38
mov eax, dword [ebp + 0x20]
and eax, 2
test eax, eax
je 0x409017
mov eax, 1
jmp 0x40901c
mov eax, 0xfffffffc
mov dword [ebp - 0xc], eax
mov eax, dword [ebp + 8]
mov dword [eax], 0x26
jmp case.0x408acf.4
mov eax, dword [ebp - 0x24]
cmp eax, dword [ebp - 0xa0]
jae 0x409006
mov eax, dword [ebp - 0xa0]
sub eax, dword [ebp - 0x24]
mov edx, eax
mov eax, dword [ebp - 0xa4]
sub eax, dword [ebp - 0x28]
cmp edx, eax
cmovbe eax, edx
mov edx, dword [ebp - 0x18]
cmp edx, eax
cmovbe eax, edx
mov dword [ebp - 0x100], eax
mov eax, dword [ebp - 0x100]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x24]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x28]
mov dword [esp], eax
call sym._memcpy
mov eax, dword [ebp - 0x100]
add dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x100]
add dword [ebp - 0x28], eax
mov eax, dword [ebp - 0x100]
sub dword [ebp - 0x18], eax
jmp 0x409099
nop
cmp dword [ebp - 0x18], 0
jne 0x408ff8
jmp 0x40a3a4
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x18]
cmp eax, 3
jne 0x4090c8
mov dword [ebp - 0xc], 0xffffffff
mov eax, dword [ebp + 8]
mov dword [eax], 0xa
jmp case.0x408acf.4
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x18]
cmp eax, 1
jne 0x40918e
mov eax, dword [ebp + 8]
add eax, 0x1d8c
mov dword [ebp - 0x30], eax
mov eax, dword [ebp + 8]
mov dword [eax + 0x2c], 0x120
mov eax, dword [ebp + 8]
mov dword [eax + 0x30], 0x20
mov eax, dword [ebp + 8]
add eax, 0x1eac
mov dword [esp + 8], 0x20
mov dword [esp + 4], 5
mov dword [esp], eax
call sym._memset
mov dword [ebp - 0x34], 0
jmp 0x40912f
mov eax, dword [ebp - 0x30]
lea edx, [eax + 1]
mov dword [ebp - 0x30], edx
mov byte [eax], 8
add dword [ebp - 0x34], 1
cmp dword [ebp - 0x34], 0x8f
jbe 0x40911f
jmp 0x40914a
mov eax, dword [ebp - 0x30]
lea edx, [eax + 1]
mov dword [ebp - 0x30], edx
mov byte [eax], 9
add dword [ebp - 0x34], 1
cmp dword [ebp - 0x34], 0xff
jbe 0x40913a
jmp 0x409165
mov eax, dword [ebp - 0x30]
lea edx, [eax + 1]
mov dword [ebp - 0x30], edx
mov byte [eax], 7
add dword [ebp - 0x34], 1
cmp dword [ebp - 0x34], 0x117
jbe 0x409155
jmp 0x409180
mov eax, dword [ebp - 0x30]
lea edx, [eax + 1]
mov dword [ebp - 0x30], edx
mov byte [eax], 8
add dword [ebp - 0x34], 1
cmp dword [ebp - 0x34], 0x11f
jbe 0x409170
jmp 0x409af3
mov dword [ebp - 0x18], 0
jmp 0x4092a1
mov eax, dword [ebp - 0x18]
add eax, 0x42206d
movzx eax, byte [eax]
movsx eax, al
cmp dword [ebp - 0x10], eax
jae 0x409220
jmp 0x4091d6
mov eax, dword [ebp + 0x20]
and eax, 2
test eax, eax
je 0x4091c0
mov eax, 1
jmp 0x4091c5
mov eax, 0xfffffffc
mov dword [ebp - 0xc], eax
mov eax, dword [ebp + 8]
mov dword [eax], 0xb
jmp case.0x408acf.4
nop
mov eax, dword [ebp - 0x24]
cmp eax, dword [ebp - 0xa0]
jae 0x4091af
mov eax, dword [ebp - 0x24]
lea edx, [eax + 1]
mov dword [ebp - 0x24], edx
movzx eax, byte [eax]
movzx eax, al
mov dword [ebp - 0xb8], eax
mov eax, dword [ebp - 0x10]
mov edx, dword [ebp - 0xb8]
mov ecx, eax
shl edx, cl
mov eax, edx
or dword [ebp - 0x20], eax
add dword [ebp - 0x10], 8
mov eax, dword [ebp - 0x18]
add eax, 0x42206d
movzx eax, byte [eax]
movsx eax, al
cmp dword [ebp - 0x10], eax
jb 0x4091d6
mov eax, dword [ebp - 0x18]
add eax, 0x42206d
movzx eax, byte [eax]
movsx eax, al
mov edx, 1
mov ecx, eax
shl edx, cl
mov eax, edx
sub eax, 1
and eax, dword [ebp - 0x20]
mov edx, eax
mov eax, dword [ebp + 8]
mov ecx, dword [ebp - 0x18]
add ecx, 8
mov dword [eax + ecx*4 + 0xc], edx
mov eax, dword [ebp - 0x18]
add eax, 0x42206d
movzx eax, byte [eax]
movsx eax, al
mov ecx, eax
shr dword [ebp - 0x20], cl
mov eax, dword [ebp - 0x18]
add eax, 0x42206d
movzx eax, byte [eax]
movsx eax, al
sub dword [ebp - 0x10], eax
mov eax, dword [ebp + 8]
mov edx, dword [ebp - 0x18]
add edx, 8
mov edx, dword [eax + edx*4 + 0xc]
mov eax, dword [ebp - 0x18]
movzx eax, word [eax + eax + 0x422a34]
movzx eax, ax
lea ecx, [edx + eax]
mov eax, dword [ebp + 8]
mov edx, dword [ebp - 0x18]
add edx, 8
mov dword [eax + edx*4 + 0xc], ecx
add dword [ebp - 0x18], 1
cmp dword [ebp - 0x18], 2
jbe 0x40919a
mov eax, dword [ebp + 8]
add eax, 0x1ecc
mov dword [esp + 8], 0x13
mov dword [esp + 4], 0
mov dword [esp], eax
call sym._memset
mov dword [ebp - 0x18], 0
jmp 0x40937b
cmp dword [ebp - 0x10], 2
ja 0x409343
jmp 0x409306
mov eax, dword [ebp + 0x20]
and eax, 2
test eax, eax
je 0x4092f0
mov eax, 1
jmp 0x4092f5
mov eax, 0xfffffffc
mov dword [ebp - 0xc], eax
mov eax, dword [ebp + 8]
mov dword [eax], 0xe
jmp case.0x408acf.4
nop
mov eax, dword [ebp - 0x24]
cmp eax, dword [ebp - 0xa0]
jae 0x4092df
mov eax, dword [ebp - 0x24]
lea edx, [eax + 1]
mov dword [ebp - 0x24], edx
movzx eax, byte [eax]
movzx eax, al
mov dword [ebp - 0xb0], eax
mov eax, dword [ebp - 0x10]
mov edx, dword [ebp - 0xb0]
mov ecx, eax
shl edx, cl
mov eax, edx
or dword [ebp - 0x20], eax
add dword [ebp - 0x10], 8
cmp dword [ebp - 0x10], 2
jbe 0x409306
mov eax, dword [ebp - 0x20]
and eax, 7
mov dword [ebp - 0xb4], eax
shr dword [ebp - 0x20], 3
sub dword [ebp - 0x10], 3
mov eax, dword [ebp - 0x18]
add eax, 0x422a3c
movzx eax, byte [eax]
movzx eax, al
mov edx, dword [ebp - 0xb4]
mov ecx, edx
mov edx, dword [ebp + 8]
mov byte [edx + eax + 0x1ecc], cl
add dword [ebp - 0x18], 1
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x34]
cmp dword [ebp - 0x18], eax
jb 0x4092d7
mov eax, dword [ebp + 8]
mov dword [eax + 0x34], 0x13
jmp 0x409af3
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x18]
shl eax, 0xb
lea edx, [eax + 0x40]
mov eax, dword [ebp + 8]
add eax, edx
mov dword [ebp - 0xbc], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x18]
mov eax, dword [ebp + eax*4 - 0x114]
mov dword [ebp - 0xc0], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x18]
mov eax, dword [ebp + eax*4 - 0x120]
mov dword [ebp - 0xc4], eax
mov dword [esp + 8], 0x40
mov dword [esp + 4], 0
lea eax, [ebp - 0x1a4]
mov dword [esp], eax
call sym._memset
mov dword [esp + 8], 0x800
mov dword [esp + 4], 0
mov eax, dword [ebp - 0xbc]
mov dword [esp], eax
call sym._memset
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sym._tinfl_clear_tree
mov dword [ebp - 0x40], 0
jmp 0x40944c
mov edx, dword [ebp - 0xc4]
mov eax, dword [ebp - 0x40]
add eax, edx
movzx eax, byte [eax]
movzx eax, al
mov edx, dword [ebp + eax*4 - 0x1a4]
add edx, 1
mov dword [ebp + eax*4 - 0x1a4], edx
add dword [ebp - 0x40], 1
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0x18]
mov eax, dword [ebp + 8]
add edx, 8
mov eax, dword [eax + edx*4 + 0xc]
cmp dword [ebp - 0x40], eax
jb 0x409426
mov dword [ebp - 0x48], 0
mov dword [ebp - 0x4c], 0
mov dword [ebp - 0x160], 0
mov eax, dword [ebp - 0x160]
mov dword [ebp - 0x164], eax
mov dword [ebp - 0x40], 1
jmp 0x4094c3
mov eax, dword [ebp - 0x40]
mov eax, dword [ebp + eax*4 - 0x1a4]
add dword [ebp - 0x48], eax
mov eax, dword [ebp - 0x40]
mov edx, dword [ebp + eax*4 - 0x1a4]
mov eax, dword [ebp - 0x4c]
add eax, edx
add eax, eax
mov dword [ebp - 0x4c], eax
mov eax, dword [ebp - 0x40]
lea edx, [eax + 1]
mov eax, dword [ebp - 0x4c]
mov dword [ebp + edx*4 - 0x164], eax
add dword [ebp - 0x40], 1
cmp dword [ebp - 0x40], 0xf
jbe 0x40948e
cmp dword [ebp - 0x4c], 0x10000
je 0x4094ed
cmp dword [ebp - 0x48], 1
jbe 0x4094ed
mov dword [ebp - 0xc], 0xffffffff
mov eax, dword [ebp + 8]
mov dword [eax], 0x23
jmp case.0x408acf.4
mov dword [ebp - 0x38], 0xffffffff
mov dword [ebp - 0x50], 0
jmp 0x4096eb
mov dword [ebp - 0x54], 0
mov edx, dword [ebp - 0xc4]
mov eax, dword [ebp - 0x50]
add eax, edx
movzx eax, byte [eax]
movzx eax, al
mov dword [ebp - 0xc8], eax
cmp dword [ebp - 0xc8], 0
je 0x4096e6
mov eax, dword [ebp - 0xc8]
mov eax, dword [ebp + eax*4 - 0x164]
lea ecx, [eax + 1]
mov edx, dword [ebp - 0xc8]
mov dword [ebp + edx*4 - 0x164], ecx
mov dword [ebp - 0x5c], eax
mov eax, dword [ebp - 0xc8]
mov dword [ebp - 0x58], eax
jmp 0x40956e
mov eax, dword [ebp - 0x54]
lea edx, [eax + eax]
mov eax, dword [ebp - 0x5c]
and eax, 1
or eax, edx
mov dword [ebp - 0x54], eax
sub dword [ebp - 0x58], 1
shr dword [ebp - 0x5c], 1
cmp dword [ebp - 0x58], 0
jne 0x409556
cmp dword [ebp - 0xc8], 0xa
ja 0x4095d0
mov eax, dword [ebp - 0xc8]
shl eax, 9
mov edx, eax
mov eax, dword [ebp - 0x50]
or eax, edx
mov word [ebp - 0xca], ax
jmp 0x4095c2
mov eax, dword [ebp - 0x54]
lea edx, [eax + eax]
mov eax, dword [ebp - 0xbc]
add edx, eax
movzx eax, word [ebp - 0xca]
mov word [edx], ax
mov eax, dword [ebp - 0xc8]
mov edx, 1
mov ecx, eax
shl edx, cl
mov eax, edx
add dword [ebp - 0x54], eax
cmp dword [ebp - 0x54], 0x3ff
jbe 0x409596
jmp 0x4096e7
mov eax, dword [ebp - 0x54]
and eax, 0x3ff
lea edx, [eax + eax]
mov eax, dword [ebp - 0xbc]
add eax, edx
movzx eax, word [eax]
cwde
mov dword [ebp - 0x3c], eax
cmp dword [ebp - 0x3c], 0
jne 0x409613
mov eax, dword [ebp - 0x54]
and eax, 0x3ff
lea edx, [eax + eax]
mov eax, dword [ebp - 0xbc]
add eax, edx
mov edx, dword [ebp - 0x38]
mov word [eax], dx
mov eax, dword [ebp - 0x38]
mov dword [ebp - 0x3c], eax
sub dword [ebp - 0x38], 2
shr dword [ebp - 0x54], 9
mov eax, dword [ebp - 0xc8]
mov dword [ebp - 0x44], eax
jmp 0x4096a8
shr dword [ebp - 0x54], 1
mov eax, dword [ebp - 0x54]
and eax, 1
mov edx, eax
mov eax, dword [ebp - 0x3c]
sub eax, edx
mov dword [ebp - 0x3c], eax
mov eax, dword [ebp - 0x3c]
lea edx, [eax + 1]
mov eax, 0
sub eax, edx
add eax, eax
mov edx, eax
mov eax, dword [ebp - 0xc0]
add eax, edx
movzx eax, word [eax]
test ax, ax
jne 0x409684
mov eax, dword [ebp - 0x3c]
lea edx, [eax + 1]
mov eax, 0
sub eax, edx
add eax, eax
mov edx, eax
mov eax, dword [ebp - 0xc0]
add eax, edx
mov edx, dword [ebp - 0x38]
mov word [eax], dx
mov eax, dword [ebp - 0x38]
mov dword [ebp - 0x3c], eax
sub dword [ebp - 0x38], 2
jmp 0x4096a4
mov eax, dword [ebp - 0x3c]
lea edx, [eax + 1]
mov eax, 0
sub eax, edx
add eax, eax
mov edx, eax
mov eax, dword [ebp - 0xc0]
add eax, edx
movzx eax, word [eax]
cwde
mov dword [ebp - 0x3c], eax
sub dword [ebp - 0x44], 1
cmp dword [ebp - 0x44], 0xb
ja 0x409625
shr dword [ebp - 0x54], 1
mov eax, dword [ebp - 0x54]
and eax, 1
mov edx, eax
mov eax, dword [ebp - 0x3c]
sub eax, edx
mov dword [ebp - 0x3c], eax
mov eax, dword [ebp - 0x3c]
lea edx, [eax + 1]
mov eax, 0
sub eax, edx
add eax, eax
mov edx, eax
mov eax, dword [ebp - 0xc0]
add eax, edx
mov edx, dword [ebp - 0x50]
mov word [eax], dx
jmp 0x4096e7
nop
add dword [ebp - 0x50], 1
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0x18]
mov eax, dword [ebp + 8]
add edx, 8
mov eax, dword [eax + edx*4 + 0xc]
cmp dword [ebp - 0x50], eax
jb 0x409500
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x18]
cmp eax, 2
jne 0x409ae4
mov dword [ebp - 0x18], 0
jmp 0x409a4d
cmp dword [ebp - 0x10], 0xe
ja 0x409878
mov eax, dword [ebp - 0xa0]
sub eax, dword [ebp - 0x24]
cmp eax, 1
jg 0x409841
mov eax, dword [ebp - 0x20]
and eax, 0x3ff
mov edx, eax
mov eax, dword [ebp + 8]
add edx, 0x820
movzx eax, word [eax + edx*2]
cwde
mov dword [ebp - 0x60], eax
cmp dword [ebp - 0x60], 0
js 0x409780
mov eax, dword [ebp - 0x60]
sar eax, 9
mov dword [ebp - 0x64], eax
cmp dword [ebp - 0x64], 0
je 0x4097fe
mov eax, dword [ebp - 0x10]
cmp eax, dword [ebp - 0x64]
jb 0x4097fe
jmp 0x409878
cmp dword [ebp - 0x10], 0xa
jbe 0x4097fe
mov dword [ebp - 0x64], 0xa
mov eax, dword [ebp - 0x64]
lea edx, [eax + 1]
mov dword [ebp - 0x64], edx
mov edx, dword [ebp - 0x20]
mov ecx, eax
shr edx, cl
mov eax, edx
and eax, 1
mov edx, dword [ebp - 0x60]
sub eax, edx
lea edx, [eax - 1]
mov eax, dword [ebp + 8]
add edx, 0xea0
movzx eax, word [eax + edx*2]
cwde
mov dword [ebp - 0x60], eax
cmp dword [ebp - 0x60], 0
jns 0x4097cc
mov eax, dword [ebp - 0x64]
add eax, 1
cmp dword [ebp - 0x10], eax
jae 0x40978d
cmp dword [ebp - 0x60], 0
js 0x4097fe
jmp 0x409878
mov eax, dword [ebp + 0x20]
and eax, 2
test eax, eax
je 0x4097e8
mov eax, 1
jmp 0x4097ed
mov eax, 0xfffffffc
mov dword [ebp - 0xc], eax
mov eax, dword [ebp + 8]
mov dword [eax], 0x10
jmp case.0x408acf.4
nop
mov eax, dword [ebp - 0x24]
cmp eax, dword [ebp - 0xa0]
jae 0x4097d7
mov eax, dword [ebp - 0x24]
lea edx, [eax + 1]
mov dword [ebp - 0x24], edx
movzx eax, byte [eax]
movzx eax, al
mov dword [ebp - 0xe8], eax
mov eax, dword [ebp - 0x10]
mov edx, dword [ebp - 0xe8]
mov ecx, eax
shl edx, cl
mov eax, edx
or dword [ebp - 0x20], eax
add dword [ebp - 0x10], 8
cmp dword [ebp - 0x10], 0xe
jbe 0x40973b
jmp 0x409878
mov eax, dword [ebp - 0x24]
movzx eax, byte [eax]
movzx edx, al
mov eax, dword [ebp - 0x10]
mov ebx, edx
mov ecx, eax
shl ebx, cl
mov eax, dword [ebp - 0x24]
add eax, 1
movzx eax, byte [eax]
movzx edx, al
mov eax, dword [ebp - 0x10]
add eax, 8
mov ecx, eax
shl edx, cl
mov eax, edx
or eax, ebx
or dword [ebp - 0x20], eax
add dword [ebp - 0x24], 2
add dword [ebp - 0x10], 0x10
mov eax, dword [ebp - 0x20]
and eax, 0x3ff
mov edx, eax
mov eax, dword [ebp + 8]
add edx, 0x820
movzx eax, word [eax + edx*2]
cwde
mov dword [ebp - 0x60], eax
cmp dword [ebp - 0x60], 0
js 0x4098ab
mov eax, dword [ebp - 0x60]
sar eax, 9
mov dword [ebp - 0x64], eax
and dword [ebp - 0x60], 0x1ff
jmp 0x4098e6
mov dword [ebp - 0x64], 0xa
mov eax, dword [ebp - 0x64]
lea edx, [eax + 1]
mov dword [ebp - 0x64], edx
mov edx, dword [ebp - 0x20]
mov ecx, eax
shr edx, cl
mov eax, edx
and eax, 1
mov edx, dword [ebp - 0x60]
sub eax, edx
lea edx, [eax - 1]
mov eax, dword [ebp + 8]
add edx, 0xea0
movzx eax, word [eax + edx*2]
cwde
mov dword [ebp - 0x60], eax
cmp dword [ebp - 0x60], 0
js 0x4098b2
mov eax, dword [ebp - 0x60]
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x64]
mov ecx, eax
shr dword [ebp - 0x20], cl
mov eax, dword [ebp - 0x64]
sub dword [ebp - 0x10], eax
cmp dword [ebp - 0x14], 0xf
ja 0x40991d
mov eax, dword [ebp - 0x18]
lea edx, [eax + 1]
mov dword [ebp - 0x18], edx
mov edx, dword [ebp - 0x14]
mov ecx, edx
mov edx, dword [ebp + 8]
mov byte [edx + eax + 0x1ee3], cl
jmp 0x409a4d
cmp dword [ebp - 0x14], 0x10
jne 0x40993e
cmp dword [ebp - 0x18], 0
jne 0x40993e
mov dword [ebp - 0xc], 0xffffffff
mov eax, dword [ebp + 8]
mov dword [eax], 0x11
jmp case.0x408acf.4
mov eax, dword [ebp - 0x14]
sub eax, 0x10
movzx eax, byte [eax + 0x421e58]
movsx eax, al
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x10]
cmp eax, dword [ebp - 0x1c]
jae 0x4099c1
jmp 0x409982
mov eax, dword [ebp + 0x20]
and eax, 2
test eax, eax
je 0x40996c
mov eax, 1
jmp 0x409971
mov eax, 0xfffffffc
mov dword [ebp - 0xc], eax
mov eax, dword [ebp + 8]
mov dword [eax], 0x12
jmp case.0x408acf.4
nop
mov eax, dword [ebp - 0x24]
cmp eax, dword [ebp - 0xa0]
jae 0x40995b
mov eax, dword [ebp - 0x24]
lea edx, [eax + 1]
mov dword [ebp - 0x24], edx
movzx eax, byte [eax]
movzx eax, al
mov dword [ebp - 0xec], eax
mov eax, dword [ebp - 0x10]
mov edx, dword [ebp - 0xec]
mov ecx, eax
shl edx, cl
mov eax, edx
or dword [ebp - 0x20], eax
add dword [ebp - 0x10], 8
mov eax, dword [ebp - 0x10]
cmp eax, dword [ebp - 0x1c]
jb 0x409982
mov eax, dword [ebp - 0x1c]
mov edx, 1
mov ecx, eax
shl edx, cl
mov eax, edx
sub eax, 1
and eax, dword [ebp - 0x20]
mov dword [ebp - 0xf0], eax
mov eax, dword [ebp - 0x1c]
mov ecx, eax
shr dword [ebp - 0x20], cl
mov eax, dword [ebp - 0x1c]
sub dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x14]
sub eax, 0x10
movzx eax, byte [eax + 0x422071]
movsx eax, al
add dword [ebp - 0xf0], eax
cmp dword [ebp - 0x14], 0x10
jne 0x409a1b
mov eax, dword [ebp - 0x18]
lea edx, [eax - 1]
mov eax, dword [ebp + 8]
movzx eax, byte [eax + edx + 0x1ee3]
movzx eax, al
jmp 0x409a20
mov eax, 0
mov edx, dword [ebp + 8]
lea ecx, [edx + 0x1ee3]
mov edx, dword [ebp - 0x18]
add ecx, edx
mov edx, dword [ebp - 0xf0]
mov dword [esp + 8], edx
mov dword [esp + 4], eax
mov dword [esp], ecx
call sym._memset
mov eax, dword [ebp - 0xf0]
add dword [ebp - 0x18], eax
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0x2c]
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x30]
add eax, edx
cmp dword [ebp - 0x18], eax
jb 0x40971f
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0x2c]
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x30]
add eax, edx
cmp dword [ebp - 0x18], eax
je 0x409a8c
mov dword [ebp - 0xc], 0xffffffff
mov eax, dword [ebp + 8]
mov dword [eax], 0x15
jmp case.0x408acf.4
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x2c]
mov edx, dword [ebp + 8]
lea ecx, [edx + 0x1ee3]
mov edx, dword [ebp + 8]
add edx, 0x1d8c
mov dword [esp + 8], eax
mov dword [esp + 4], ecx
mov dword [esp], edx
call sym._memcpy
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x30]
mov edx, dword [ebp + 8]
lea ecx, [edx + 0x1ee3]
mov edx, dword [ebp + 8]
mov edx, dword [edx + 0x2c]
add ecx, edx
mov edx, dword [ebp + 8]
add edx, 0x1eac
mov dword [esp + 8], eax
mov dword [esp + 4], ecx
mov dword [esp], edx
call sym._memcpy
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x18]
lea edx, [eax - 1]
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], edx
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x18]
test eax, eax
jns 0x409399
jmp 0x409b04
nop
mov eax, dword [ebp - 0xa0]
sub eax, dword [ebp - 0x24]
cmp eax, 3
jle 0x409b24
mov eax, dword [ebp - 0xa4]
sub eax, dword [ebp - 0x28]
cmp eax, 1
jg 0x409d3b
cmp dword [ebp - 0x10], 0xe
ja 0x409c7a
mov eax, dword [ebp - 0xa0]
sub eax, dword [ebp - 0x24]
cmp eax, 1
jg 0x409c43
mov eax, dword [ebp - 0x20]
and eax, 0x3ff
mov edx, eax
mov eax, dword [ebp + 8]
add edx, 0x20
movzx eax, word [eax + edx*2]
cwde
mov dword [ebp - 0x6c], eax
cmp dword [ebp - 0x6c], 0
js 0x409b82
mov eax, dword [ebp - 0x6c]
sar eax, 9
mov dword [ebp - 0x70], eax
cmp dword [ebp - 0x70], 0
je 0x409c00
mov eax, dword [ebp - 0x10]
cmp eax, dword [ebp - 0x70]
jb 0x409c00
jmp 0x409c7a
cmp dword [ebp - 0x10], 0xa
jbe 0x409c00
mov dword [ebp - 0x70], 0xa
mov eax, dword [ebp - 0x70]
lea edx, [eax + 1]
mov dword [ebp - 0x70], edx
mov edx, dword [ebp - 0x20]
mov ecx, eax
shr edx, cl
mov eax, edx
and eax, 1
mov edx, dword [ebp - 0x6c]
sub eax, edx
lea edx, [eax - 1]
mov eax, dword [ebp + 8]
add edx, 0xc20
movzx eax, word [eax + edx*2]
cwde
mov dword [ebp - 0x6c], eax
cmp dword [ebp - 0x6c], 0
jns 0x409bce
mov eax, dword [ebp - 0x70]
add eax, 1
cmp dword [ebp - 0x10], eax
jae 0x409b8f
cmp dword [ebp - 0x6c], 0
js 0x409c00
jmp 0x409c7a
mov eax, dword [ebp + 0x20]
and eax, 2
test eax, eax
je 0x409bea
mov eax, 1
jmp 0x409bef
mov eax, 0xfffffffc
mov dword [ebp - 0xc], eax
mov eax, dword [ebp + 8]
mov dword [eax], 0x17
jmp case.0x408acf.4
nop
mov eax, dword [ebp - 0x24]
cmp eax, dword [ebp - 0xa0]
jae 0x409bd9
mov eax, dword [ebp - 0x24]
lea edx, [eax + 1]
mov dword [ebp - 0x24], edx
movzx eax, byte [eax]
movzx eax, al
mov dword [ebp - 0xd0], eax
mov eax, dword [ebp - 0x10]
mov edx, dword [ebp - 0xd0]
mov ecx, eax
shl edx, cl
mov eax, edx
or dword [ebp - 0x20], eax
add dword [ebp - 0x10], 8
cmp dword [ebp - 0x10], 0xe
jbe 0x409b40
jmp 0x409c7a
mov eax, dword [ebp - 0x24]
movzx eax, byte [eax]
movzx edx, al
mov eax, dword [ebp - 0x10]
mov ebx, edx
mov ecx, eax
shl ebx, cl
mov eax, dword [ebp - 0x24]
add eax, 1
movzx eax, byte [eax]
movzx edx, al
mov eax, dword [ebp - 0x10]
add eax, 8
mov ecx, eax
shl edx, cl
mov eax, edx
or eax, ebx
or dword [ebp - 0x20], eax
add dword [ebp - 0x24], 2
add dword [ebp - 0x10], 0x10
mov eax, dword [ebp - 0x20]
and eax, 0x3ff
mov edx, eax
mov eax, dword [ebp + 8]
add edx, 0x20
movzx eax, word [eax + edx*2]
cwde
mov dword [ebp - 0x6c], eax
cmp dword [ebp - 0x6c], 0
js 0x409caa
mov eax, dword [ebp - 0x6c]
sar eax, 9
mov dword [ebp - 0x70], eax
and dword [ebp - 0x6c], 0x1ff
jmp 0x409ce5
mov dword [ebp - 0x70], 0xa
mov eax, dword [ebp - 0x70]
lea edx, [eax + 1]
mov dword [ebp - 0x70], edx
mov edx, dword [ebp - 0x20]
mov ecx, eax
shr edx, cl
mov eax, edx
and eax, 1
mov edx, dword [ebp - 0x6c]
sub eax, edx
lea edx, [eax - 1]
mov eax, dword [ebp + 8]
add edx, 0xc20
movzx eax, word [eax + edx*2]
cwde
mov dword [ebp - 0x6c], eax
cmp dword [ebp - 0x6c], 0
js 0x409cb1
mov eax, dword [ebp - 0x6c]
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x70]
mov ecx, eax
shr dword [ebp - 0x20], cl
mov eax, dword [ebp - 0x70]
sub dword [ebp - 0x10], eax
cmp dword [ebp - 0x18], 0xff
jbe 0x409d1c
jmp 0x409ed4
mov dword [ebp - 0xc], 2
mov eax, dword [ebp + 8]
mov dword [eax], 0x18
jmp case.0x408acf.4
nop
mov eax, dword [ebp - 0x28]
cmp eax, dword [ebp - 0xa4]
jae 0x409d07
mov eax, dword [ebp - 0x28]
lea edx, [eax + 1]
mov dword [ebp - 0x28], edx
mov edx, dword [ebp - 0x18]
mov byte [eax], dl
jmp 0x409b04
cmp dword [ebp - 0x10], 0xe
ja 0x409d6f
mov eax, dword [ebp - 0x24]
movzx eax, byte [eax]
movzx edx, al
mov eax, dword [ebp - 0x24]
add eax, 1
movzx eax, byte [eax]
movzx eax, al
shl eax, 8
or edx, eax
mov eax, dword [ebp - 0x10]
mov ecx, eax
shl edx, cl
mov eax, edx
or dword [ebp - 0x20], eax
add dword [ebp - 0x24], 2
add dword [ebp - 0x10], 0x10
mov eax, dword [ebp - 0x20]
and eax, 0x3ff
mov edx, eax
mov eax, dword [ebp + 8]
add edx, 0x20
movzx eax, word [eax + edx*2]
cwde
mov dword [ebp - 0x74], eax
cmp dword [ebp - 0x74], 0
js 0x409d98
mov eax, dword [ebp - 0x74]
sar eax, 9
mov dword [ebp - 0x78], eax
jmp 0x409dd3
mov dword [ebp - 0x78], 0xa
mov eax, dword [ebp - 0x78]
lea edx, [eax + 1]
mov dword [ebp - 0x78], edx
mov edx, dword [ebp - 0x20]
mov ecx, eax
shr edx, cl
mov eax, edx
and eax, 1
mov edx, dword [ebp - 0x74]
sub eax, edx
lea edx, [eax - 1]
mov eax, dword [ebp + 8]
add edx, 0xc20
movzx eax, word [eax + edx*2]
cwde
mov dword [ebp - 0x74], eax
cmp dword [ebp - 0x74], 0
js 0x409d9f
mov eax, dword [ebp - 0x74]
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x78]
mov ecx, eax
shr dword [ebp - 0x20], cl
mov eax, dword [ebp - 0x78]
sub dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x18]
and eax, 0x100
test eax, eax
jne 0x409ed3
cmp dword [ebp - 0x10], 0xe
ja 0x409e2b
mov eax, dword [ebp - 0x24]
movzx eax, byte [eax]
movzx edx, al
mov eax, dword [ebp - 0x24]
add eax, 1
movzx eax, byte [eax]
movzx eax, al
shl eax, 8
or edx, eax
mov eax, dword [ebp - 0x10]
mov ecx, eax
shl edx, cl
mov eax, edx
or dword [ebp - 0x20], eax
add dword [ebp - 0x24], 2
add dword [ebp - 0x10], 0x10
mov eax, dword [ebp - 0x20]
and eax, 0x3ff
mov edx, eax
mov eax, dword [ebp + 8]
add edx, 0x20
movzx eax, word [eax + edx*2]
cwde
mov dword [ebp - 0x74], eax
cmp dword [ebp - 0x74], 0
js 0x409e54
mov eax, dword [ebp - 0x74]
sar eax, 9
mov dword [ebp - 0x78], eax
jmp 0x409e8f
mov dword [ebp - 0x78], 0xa
mov eax, dword [ebp - 0x78]
lea edx, [eax + 1]
mov dword [ebp - 0x78], edx
mov edx, dword [ebp - 0x20]
mov ecx, eax
shr edx, cl
mov eax, edx
and eax, 1
mov edx, dword [ebp - 0x74]
sub eax, edx
lea edx, [eax - 1]
mov eax, dword [ebp + 8]
add edx, 0xc20
movzx eax, word [eax + edx*2]
cwde
mov dword [ebp - 0x74], eax
cmp dword [ebp - 0x74], 0
js 0x409e5b
mov eax, dword [ebp - 0x78]
mov ecx, eax
shr dword [ebp - 0x20], cl
mov eax, dword [ebp - 0x78]
sub dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x18]
mov edx, eax
mov eax, dword [ebp - 0x28]
mov byte [eax], dl
mov eax, dword [ebp - 0x74]
and eax, 0x100
test eax, eax
je 0x409ebf
add dword [ebp - 0x28], 1
mov eax, dword [ebp - 0x74]
mov dword [ebp - 0x18], eax
jmp 0x409ed4
mov eax, dword [ebp - 0x28]
add eax, 1
mov edx, dword [ebp - 0x74]
mov byte [eax], dl
add dword [ebp - 0x28], 2
jmp 0x409b04
nop
and dword [ebp - 0x18], 0x1ff
cmp dword [ebp - 0x18], 0x100
je 0x40a3a3
mov eax, dword [ebp - 0x18]
sub eax, 0x101
movzx eax, byte [eax + 0x422a50]
movzx eax, al
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x18]
sub eax, 0x101
movzx eax, word [eax + eax + 0x422a80]
movzx eax, ax
mov dword [ebp - 0x18], eax
cmp dword [ebp - 0x1c], 0
je 0x409fbe
mov eax, dword [ebp - 0x10]
cmp eax, dword [ebp - 0x1c]
jae 0x409f8d
jmp 0x409f4e
mov eax, dword [ebp + 0x20]
and eax, 2
test eax, eax
je 0x409f38
mov eax, 1
jmp 0x409f3d
mov eax, 0xfffffffc
mov dword [ebp - 0xc], eax
mov eax, dword [ebp + 8]
mov dword [eax], 0x19
jmp case.0x408acf.4
nop
mov eax, dword [ebp - 0x24]
cmp eax, dword [ebp - 0xa0]
jae 0x409f27
mov eax, dword [ebp - 0x24]
lea edx, [eax + 1]
mov dword [ebp - 0x24], edx
movzx eax, byte [eax]
movzx eax, al
mov dword [ebp - 0xd4], eax
mov eax, dword [ebp - 0x10]
mov edx, dword [ebp - 0xd4]
mov ecx, eax
shl edx, cl
mov eax, edx
or dword [ebp - 0x20], eax
add dword [ebp - 0x10], 8
mov eax, dword [ebp - 0x10]
cmp eax, dword [ebp - 0x1c]
jb 0x409f4e
mov eax, dword [ebp - 0x1c]
mov edx, 1
mov ecx, eax
shl edx, cl
mov eax, edx
sub eax, 1
and eax, dword [ebp - 0x20]
mov dword [ebp - 0xd8], eax
mov eax, dword [ebp - 0x1c]
mov ecx, eax
shr dword [ebp - 0x20], cl
mov eax, dword [ebp - 0x1c]
sub dword [ebp - 0x10], eax
mov eax, dword [ebp - 0xd8]
add dword [ebp - 0x18], eax
cmp dword [ebp - 0x10], 0xe
ja 0x40a117
mov eax, dword [ebp - 0xa0]
sub eax, dword [ebp - 0x24]
cmp eax, 1
jg 0x40a0e0
mov eax, dword [ebp - 0x20]
and eax, 0x3ff
mov edx, eax
mov eax, dword [ebp + 8]
add edx, 0x420
movzx eax, word [eax + edx*2]
cwde
mov dword [ebp - 0x7c], eax
cmp dword [ebp - 0x7c], 0
js 0x40a01f
mov eax, dword [ebp - 0x7c]
sar eax, 9
mov dword [ebp - 0x80], eax
cmp dword [ebp - 0x80], 0
je 0x40a09d
mov eax, dword [ebp - 0x10]
cmp eax, dword [ebp - 0x80]
jb 0x40a09d
jmp 0x40a117
cmp dword [ebp - 0x10], 0xa
jbe 0x40a09d
mov dword [ebp - 0x80], 0xa
mov eax, dword [ebp - 0x80]
lea edx, [eax + 1]
mov dword [ebp - 0x80], edx
mov edx, dword [ebp - 0x20]
mov ecx, eax
shr edx, cl
mov eax, edx
and eax, 1
mov edx, dword [ebp - 0x7c]
sub eax, edx
lea edx, [eax - 1]
mov eax, dword [ebp + 8]
add edx, 0xe60
movzx eax, word [eax + edx*2]
cwde
mov dword [ebp - 0x7c], eax
cmp dword [ebp - 0x7c], 0
jns 0x40a06b
mov eax, dword [ebp - 0x80]
add eax, 1
cmp dword [ebp - 0x10], eax
jae 0x40a02c
cmp dword [ebp - 0x7c], 0
js 0x40a09d
jmp 0x40a117
mov eax, dword [ebp + 0x20]
and eax, 2
test eax, eax
je 0x40a087
mov eax, 1
jmp 0x40a08c
mov eax, 0xfffffffc
mov dword [ebp - 0xc], eax
mov eax, dword [ebp + 8]
mov dword [eax], 0x1a
jmp case.0x408acf.4
nop
mov eax, dword [ebp - 0x24]
cmp eax, dword [ebp - 0xa0]
jae 0x40a076
mov eax, dword [ebp - 0x24]
lea edx, [eax + 1]
mov dword [ebp - 0x24], edx
movzx eax, byte [eax]
movzx eax, al
mov dword [ebp - 0xdc], eax
mov eax, dword [ebp - 0x10]
mov edx, dword [ebp - 0xdc]
mov ecx, eax
shl edx, cl
mov eax, edx
or dword [ebp - 0x20], eax
add dword [ebp - 0x10], 8
cmp dword [ebp - 0x10], 0xe
jbe 0x409fda
jmp 0x40a117
mov eax, dword [ebp - 0x24]
movzx eax, byte [eax]
movzx edx, al
mov eax, dword [ebp - 0x10]
mov ebx, edx
mov ecx, eax
shl ebx, cl
mov eax, dword [ebp - 0x24]
add eax, 1
movzx eax, byte [eax]
movzx edx, al
mov eax, dword [ebp - 0x10]
add eax, 8
mov ecx, eax
shl edx, cl
mov eax, edx
or eax, ebx
or dword [ebp - 0x20], eax
add dword [ebp - 0x24], 2
add dword [ebp - 0x10], 0x10
mov eax, dword [ebp - 0x20]
and eax, 0x3ff
mov edx, eax
mov eax, dword [ebp + 8]
add edx, 0x420
movzx eax, word [eax + edx*2]
cwde
mov dword [ebp - 0x7c], eax
cmp dword [ebp - 0x7c], 0
js 0x40a14a
mov eax, dword [ebp - 0x7c]
sar eax, 9
mov dword [ebp - 0x80], eax
and dword [ebp - 0x7c], 0x1ff
jmp 0x40a185
mov dword [ebp - 0x80], 0xa
mov eax, dword [ebp - 0x80]
lea edx, [eax + 1]
mov dword [ebp - 0x80], edx
mov edx, dword [ebp - 0x20]
mov ecx, eax
shr edx, cl
mov eax, edx
and eax, 1
mov edx, dword [ebp - 0x7c]
sub eax, edx
lea edx, [eax - 1]
mov eax, dword [ebp + 8]
add edx, 0xe60
movzx eax, word [eax + edx*2]
cwde
mov dword [ebp - 0x7c], eax
cmp dword [ebp - 0x7c], 0
js 0x40a151
mov eax, dword [ebp - 0x7c]
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x80]
mov ecx, eax
shr dword [ebp - 0x20], cl
mov eax, dword [ebp - 0x80]
sub dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x14]
add eax, 0x422ac0
movzx eax, byte [eax]
movzx eax, al
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x14]
movzx eax, word [eax + eax + 0x422ae0]
movzx eax, ax
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x1c], 0
je 0x40a266
mov eax, dword [ebp - 0x10]
cmp eax, dword [ebp - 0x1c]
jae 0x40a235
jmp 0x40a1f6
mov eax, dword [ebp + 0x20]
and eax, 2
test eax, eax
je 0x40a1e0
mov eax, 1
jmp 0x40a1e5
mov eax, 0xfffffffc
mov dword [ebp - 0xc], eax
mov eax, dword [ebp + 8]
mov dword [eax], 0x1b
jmp case.0x408acf.4
nop
mov eax, dword [ebp - 0x24]
cmp eax, dword [ebp - 0xa0]
jae 0x40a1cf
mov eax, dword [ebp - 0x24]
lea edx, [eax + 1]
mov dword [ebp - 0x24], edx
movzx eax, byte [eax]
movzx eax, al
mov dword [ebp - 0xe0], eax
mov eax, dword [ebp - 0x10]
mov edx, dword [ebp - 0xe0]
mov ecx, eax
shl edx, cl
mov eax, edx
or dword [ebp - 0x20], eax
add dword [ebp - 0x10], 8
mov eax, dword [ebp - 0x10]
cmp eax, dword [ebp - 0x1c]
jb 0x40a1f6
mov eax, dword [ebp - 0x1c]
mov edx, 1
mov ecx, eax
shl edx, cl
mov eax, edx
sub eax, 1
and eax, dword [ebp - 0x20]
mov dword [ebp - 0xe4], eax
mov eax, dword [ebp - 0x1c]
mov ecx, eax
shr dword [ebp - 0x20], cl
mov eax, dword [ebp - 0x1c]
sub dword [ebp - 0x10], eax
mov eax, dword [ebp - 0xe4]
add dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x28]
sub eax, dword [ebp + 0x14]
mov dword [ebp - 0x2c], eax
cmp dword [ebp - 0x14], 0
je 0x40a283
mov eax, dword [ebp - 0x14]
cmp eax, dword [ebp - 0x2c]
ja 0x40a283
cmp dword [ebp - 0x2c], 0
jne 0x40a2a2
mov eax, dword [ebp + 0x20]
and eax, 4
test eax, eax
je 0x40a2a2
mov dword [ebp - 0xc], 0xffffffff
mov eax, dword [ebp + 8]
mov dword [eax], 0x25
jmp case.0x408acf.4
mov eax, dword [ebp - 0x2c]
sub eax, dword [ebp - 0x14]
and eax, dword [ebp - 0xa8]
mov edx, eax
mov eax, dword [ebp + 0x14]
add eax, edx
mov dword [ebp - 0x68], eax
mov edx, dword [ebp - 0x68]
mov eax, dword [ebp - 0x28]
cmp edx, eax
cmovb edx, eax
mov eax, dword [ebp - 0x18]
add eax, edx
cmp dword [ebp - 0xa4], eax
jae 0x40a363
jmp 0x40a31f
mov dword [ebp - 0xc], 2
mov eax, dword [ebp + 8]
mov dword [eax], 0x35
jmp case.0x408acf.4
nop
mov eax, dword [ebp - 0x28]
cmp eax, dword [ebp - 0xa4]
jae 0x40a2d6
mov eax, dword [ebp - 0x2c]
lea edx, [eax + 1]
mov dword [ebp - 0x2c], edx
sub eax, dword [ebp - 0x14]
and eax, dword [ebp - 0xa8]
mov edx, eax
mov eax, dword [ebp + 0x14]
lea ecx, [edx + eax]
mov eax, dword [ebp - 0x28]
lea edx, [eax + 1]
mov dword [ebp - 0x28], edx
movzx edx, byte [ecx]
mov byte [eax], dl
mov eax, dword [ebp - 0x18]
lea edx, [eax - 1]
mov dword [ebp - 0x18], edx
test eax, eax
jne 0x40a2eb
jmp 0x40a39e
mov eax, dword [ebp - 0x68]
movzx edx, byte [eax]
mov eax, dword [ebp - 0x28]
mov byte [eax], dl
mov eax, dword [ebp - 0x28]
lea edx, [eax + 1]
mov eax, dword [ebp - 0x68]
movzx eax, byte [eax + 1]
mov byte [edx], al
mov eax, dword [ebp - 0x28]
lea edx, [eax + 2]
mov eax, dword [ebp - 0x68]
movzx eax, byte [eax + 2]
mov byte [edx], al
add dword [ebp - 0x28], 3
add dword [ebp - 0x68], 3
sub dword [ebp - 0x18], 3
cmp dword [ebp - 0x18], 2
ja 0x40a32e
cmp dword [ebp - 0x18], 0
je 0x409b03
mov eax, dword [ebp - 0x68]
movzx edx, byte [eax]
mov eax, dword [ebp - 0x28]
mov byte [eax], dl
cmp dword [ebp - 0x18], 1
jbe 0x40a393
mov eax, dword [ebp - 0x28]
lea edx, [eax + 1]
mov eax, dword [ebp - 0x68]
movzx eax, byte [eax + 1]
mov byte [edx], al
mov eax, dword [ebp - 0x18]
add dword [ebp - 0x28], eax
jmp 0x409b03
jmp 0x409b03
nop
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x14]
and eax, 1
test eax, eax
je 0x408c90
mov eax, dword [ebp - 0x10]
and eax, 7
cmp dword [ebp - 0x10], eax
jae 0x40a42b
jmp 0x40a3e9
mov eax, dword [ebp + 0x20]
and eax, 2
test eax, eax
je 0x40a3d3
mov eax, 1
jmp 0x40a3d8
mov eax, 0xfffffffc
mov dword [ebp - 0xc], eax
mov eax, dword [ebp + 8]
mov dword [eax], 0x20
jmp case.0x408acf.4
nop
mov eax, dword [ebp - 0x24]
cmp eax, dword [ebp - 0xa0]
jae 0x40a3c2
mov eax, dword [ebp - 0x24]
lea edx, [eax + 1]
mov dword [ebp - 0x24], edx
movzx eax, byte [eax]
movzx eax, al
mov dword [ebp - 0xf8], eax
mov eax, dword [ebp - 0x10]
mov edx, dword [ebp - 0xf8]
mov ecx, eax
shl edx, cl
mov eax, edx
or dword [ebp - 0x20], eax
add dword [ebp - 0x10], 8
mov eax, dword [ebp - 0x10]
and eax, 7
cmp dword [ebp - 0x10], eax
jb 0x40a3e9
mov eax, dword [ebp - 0x10]
and eax, 7
mov ecx, eax
shr dword [ebp - 0x20], cl
and dword [ebp - 0x10], 0xfffffff8
jmp 0x40a444
sub dword [ebp - 0x24], 1
sub dword [ebp - 0x10], 8
mov eax, dword [ebp - 0x24]
cmp eax, dword [ebp + 0xc]
jbe 0x40a452
cmp dword [ebp - 0x10], 7
ja 0x40a43c
mov eax, dword [ebp - 0x10]
mov edx, 0xffffffff
mov ecx, eax
shl edx, cl
mov eax, edx
not eax
and dword [ebp - 0x20], eax
cmp dword [ebp - 0x10], 0
je 0x40a489
mov dword [esp + 8], 0xb25
mov dword [esp + 4], str.miniz.c
mov dword [esp], str._num_bits
mov eax, dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__assert]
call eax
mov eax, dword [ebp + 0x20]
and eax, 1
test eax, eax
je case.0x408acf.34
mov dword [ebp - 0x18], 0
jmp 0x40a58f
cmp dword [ebp - 0x10], 0
je 0x40a553
cmp dword [ebp - 0x10], 7
ja 0x40a519
jmp 0x40a4dc
mov eax, dword [ebp + 0x20]
and eax, 2
test eax, eax
je 0x40a4c6
mov eax, 1
jmp 0x40a4cb
mov eax, 0xfffffffc
mov dword [ebp - 0xc], eax
mov eax, dword [ebp + 8]
mov dword [eax], 0x29
jmp case.0x408acf.4
nop
mov eax, dword [ebp - 0x24]
cmp eax, dword [ebp - 0xa0]
jae 0x40a4b5
mov eax, dword [ebp - 0x24]
lea edx, [eax + 1]
mov dword [ebp - 0x24], edx
movzx eax, byte [eax]
movzx eax, al
mov dword [ebp - 0xfc], eax
mov eax, dword [ebp - 0x10]
mov edx, dword [ebp - 0xfc]
mov ecx, eax
shl edx, cl
mov eax, edx
or dword [ebp - 0x20], eax
add dword [ebp - 0x10], 8
cmp dword [ebp - 0x10], 7
jbe 0x40a4dc
mov eax, dword [ebp - 0x20]
movzx eax, al
mov dword [ebp - 0x84], eax
shr dword [ebp - 0x20], 8
sub dword [ebp - 0x10], 8
jmp 0x40a574
mov eax, dword [ebp + 0x20]
and eax, 2
test eax, eax
je 0x40a540
mov eax, 1
jmp 0x40a545
mov eax, 0xfffffffc
mov dword [ebp - 0xc], eax
mov eax, dword [ebp + 8]
mov dword [eax], 0x2a
jmp case.0x408acf.4
nop
mov eax, dword [ebp - 0x24]
cmp eax, dword [ebp - 0xa0]
jae 0x40a52f
mov eax, dword [ebp - 0x24]
lea edx, [eax + 1]
mov dword [ebp - 0x24], edx
movzx eax, byte [eax]
movzx eax, al
mov dword [ebp - 0x84], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x10]
shl eax, 8
or eax, dword [ebp - 0x84]
mov edx, eax
mov eax, dword [ebp + 8]
mov dword [eax + 0x10], edx
add dword [ebp - 0x18], 1
cmp dword [ebp - 0x18], 3
jbe 0x40a4a3
mov dword [ebp - 0xc], 0
mov eax, dword [ebp + 8]
mov dword [eax], 0x22
nop
cmp dword [ebp - 0xc], 1
je 0x40a5ce
cmp dword [ebp - 0xc], 0xfffffffc
je 0x40a5ce
jmp 0x40a5c0
sub dword [ebp - 0x24], 1
sub dword [ebp - 0x10], 8
mov eax, dword [ebp - 0x24]
cmp eax, dword [ebp + 0xc]
jbe 0x40a5ce
cmp dword [ebp - 0x10], 7
ja 0x40a5b8
mov eax, dword [ebp + 8]
mov edx, dword [ebp - 0x10]
mov dword [eax + 4], edx
mov eax, dword [ebp - 0x10]
mov edx, 0xffffffff
mov ecx, eax
shl edx, cl
mov eax, edx
not eax
and eax, dword [ebp - 0x20]
mov edx, eax
mov eax, dword [ebp + 8]
mov dword [eax + 0x38], edx
mov eax, dword [ebp + 8]
mov edx, dword [ebp - 0x14]
mov dword [eax + 0x20], edx
mov eax, dword [ebp + 8]
mov edx, dword [ebp - 0x18]
mov dword [eax + 0x24], edx
mov eax, dword [ebp + 8]
mov edx, dword [ebp - 0x1c]
mov dword [eax + 0x28], edx
mov eax, dword [ebp + 8]
mov edx, dword [ebp - 0x2c]
mov dword [eax + 0x3c], edx
mov eax, dword [ebp - 0x24]
sub eax, dword [ebp + 0xc]
mov edx, eax
mov eax, dword [ebp + 0x10]
mov dword [eax], edx
mov eax, dword [ebp - 0x28]
sub eax, dword [ebp + 0x18]
mov edx, eax
mov eax, dword [ebp + 0x1c]
mov dword [eax], edx
mov eax, dword [ebp + 0x20]
and eax, 9
test eax, eax
je 0x40a8c5
cmp dword [ebp - 0xc], 0
js 0x40a8c5
mov eax, dword [ebp + 0x18]
mov dword [ebp - 0x88], eax
mov eax, dword [ebp + 0x1c]
mov eax, dword [eax]
mov dword [ebp - 0x8c], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x1c]
and eax, 0xffff
mov dword [ebp - 0x94], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x1c]
shr eax, 0x10
mov dword [ebp - 0x98], eax
mov ecx, dword [ebp - 0x8c]
mov edx, 0x5e6ea9af
mov eax, ecx
mul edx
mov eax, edx
shr eax, 0xb
imul edx, eax, 0x15b0
mov eax, ecx
sub eax, edx
mov dword [ebp - 0x9c], eax
jmp 0x40a878
mov dword [ebp - 0x90], 0
jmp 0x40a7c7
mov eax, dword [ebp - 0x88]
movzx eax, byte [eax]
movzx eax, al
add dword [ebp - 0x94], eax
mov eax, dword [ebp - 0x94]
add dword [ebp - 0x98], eax
mov eax, dword [ebp - 0x88]
add eax, 1
movzx eax, byte [eax]
movzx eax, al
add dword [ebp - 0x94], eax
mov eax, dword [ebp - 0x94]
add dword [ebp - 0x98], eax
mov eax, dword [ebp - 0x88]
add eax, 2
movzx eax, byte [eax]
movzx eax, al
add dword [ebp - 0x94], eax
mov eax, dword [ebp - 0x94]
add dword [ebp - 0x98], eax
mov eax, dword [ebp - 0x88]
add eax, 3
movzx eax, byte [eax]
movzx eax, al
add dword [ebp - 0x94], eax
mov eax, dword [ebp - 0x94]
add dword [ebp - 0x98], eax
mov eax, dword [ebp - 0x88]
add eax, 4
movzx eax, byte [eax]
movzx eax, al
add dword [ebp - 0x94], eax
mov eax, dword [ebp - 0x94]
add dword [ebp - 0x98], eax
mov eax, dword [ebp - 0x88]
add eax, 5
movzx eax, byte [eax]
movzx eax, al
add dword [ebp - 0x94], eax
mov eax, dword [ebp - 0x94]
add dword [ebp - 0x98], eax
mov eax, dword [ebp - 0x88]
add eax, 6
movzx eax, byte [eax]
movzx eax, al
add dword [ebp - 0x94], eax
mov eax, dword [ebp - 0x94]
add dword [ebp - 0x98], eax
mov eax, dword [ebp - 0x88]
add eax, 7
movzx eax, byte [eax]
movzx eax, al
add dword [ebp - 0x94], eax
mov eax, dword [ebp - 0x94]
add dword [ebp - 0x98], eax
add dword [ebp - 0x90], 8
add dword [ebp - 0x88], 8
mov eax, dword [ebp - 0x90]
add eax, 7
cmp dword [ebp - 0x9c], eax
ja 0x40a6b4
jmp 0x40a80c
mov eax, dword [ebp - 0x88]
lea edx, [eax + 1]
mov dword [ebp - 0x88], edx
movzx eax, byte [eax]
movzx eax, al
add dword [ebp - 0x94], eax
mov eax, dword [ebp - 0x94]
add dword [ebp - 0x98], eax
add dword [ebp - 0x90], 1
mov eax, dword [ebp - 0x90]
cmp eax, dword [ebp - 0x9c]
jb 0x40a7de
mov ecx, dword [ebp - 0x94]
mov edx, 0x80078071
mov eax, ecx
mul edx
mov eax, edx
shr eax, 0xf
imul edx, eax, 0xfff1
mov eax, ecx
sub eax, edx
mov dword [ebp - 0x94], eax
mov ecx, dword [ebp - 0x98]
mov edx, 0x80078071
mov eax, ecx
mul edx
mov eax, edx
shr eax, 0xf
imul edx, eax, 0xfff1
mov eax, ecx
sub eax, edx
mov dword [ebp - 0x98], eax
mov eax, dword [ebp - 0x9c]
sub dword [ebp - 0x8c], eax
mov dword [ebp - 0x9c], 0x15b0
cmp dword [ebp - 0x8c], 0
jne 0x40a6a5
mov eax, dword [ebp - 0x98]
shl eax, 0x10
mov edx, eax
mov eax, dword [ebp - 0x94]
add edx, eax
mov eax, dword [ebp + 8]
mov dword [eax + 0x1c], edx
cmp dword [ebp - 0xc], 0
jne 0x40a8c5
mov eax, dword [ebp + 0x20]
and eax, 1
test eax, eax
je 0x40a8c5
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0x1c]
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x10]
cmp edx, eax
je 0x40a8c5
mov dword [ebp - 0xc], 0xfffffffe
mov eax, dword [ebp - 0xc]
mov ebx, dword [ebp - 4]
leave
ret