Function at 0x404d0c
Capabilities:
Compress data using lzo

Disassembly:
test dword [0x4b63ec], 0xfffffe00
jne 0x404d44
test dword [0x4b63ec], 0xffffff80
jne 0x4052b4
test dword [0x4b63ec], 0xffffffff
jne 0x4057f8
call fcn.00490ee4
jmp fcn.00404d0c
push ebp
mov ebp, esp
and esp, 0xfffffff0
push edi
push esi
push ebx
sub esp, 0x34
mov ebx, ecx
mov ecx, edx
lea edx, [eax + ecx]
lea edi, [eax + ecx - 0xd]
mov dword [esp + 0x20], eax
mov dword [esp + 0x18], edi
mov dword [esp + 0x10], eax
mov dword [esp + 4], edx
mov edi, ebx
mov dword [esp + 0xc], edi
mov dword [esp + 8], ebx
lea ecx, [eax + 4]
movzx edx, byte [ecx + 3]
movzx ebx, byte [ecx + 2]
movzx esi, byte [ecx + 1]
movzx edi, byte [ecx]
mov eax, edx
shl eax, 6
mov dword [esp + 0x28], ebx
xor eax, ebx
shl eax, 5
xor eax, esi
shl eax, 5
xor eax, edi
mov esi, dword [esp + 0x20]
lea ebx, [eax + eax]
add ebx, ebx
add ebx, ebx
add ebx, ebx
add ebx, ebx
add ebx, eax
shr ebx, 5
and ebx, 0x3fff
mov dword [esp + 0x24], ebx
lea eax, [ebx + ebx]
add eax, eax
mov ebx, dword [ebp + 0x18]
mov ebx, dword [ebx + eax]
mov dword [esp + 0x1c], ebx
cmp ebx, esi
jb 0x405261
mov ebx, ecx
sub ebx, dword [esp + 0x1c]
mov dword [esp + 0x14], ebx
je 0x405261
cmp ebx, 0xbfff
ja 0x405261
cmp ebx, 0x800
jbe 0x404e5c
mov ebx, dword [esp + 0x1c]
movzx esi, byte [ebx + 3]
cmp esi, edx
je 0x404e5c
mov eax, dword [esp + 0x24]
mov ebx, dword [ebp + 0x18]
mov edi, dword [esp + 0x20]
and eax, 0x7ff
xor eax, 0x201f
add eax, eax
lea eax, [eax + eax]
mov esi, dword [ebx + eax]
mov dword [esp + 0x1c], esi
cmp esi, edi
jb 0x405261
mov ebx, ecx
sub ebx, dword [esp + 0x1c]
mov dword [esp + 0x14], ebx
je 0x405261
cmp ebx, 0xbfff
ja 0x405261
cmp ebx, 0x800
jbe 0x404e5c
mov ebx, esi
movzx esi, byte [ebx + 3]
cmp esi, edx
jne 0x405261
mov edx, dword [esp + 0x1c]
movzx ebx, word [edx]
movzx esi, word [ecx]
cmp ebx, esi
jne 0x405261
mov esi, dword [esp + 0x28]
movzx ebx, byte [edx + 2]
cmp ebx, esi
jne 0x405261
mov esi, dword [ebp + 0x18]
mov dword [eax + esi], ecx
mov eax, ecx
sub eax, dword [esp + 0x10]
mov dword [esp + 0x28], eax
je 0x404faa
cmp eax, 3
ja 0x404ea5
mov edx, dword [esp + 0xc]
or byte [edx - 2], al
jmp 0x404f84
cmp eax, 0x12
ja 0x404ec1
mov esi, dword [esp + 0xc]
lea edx, [eax - 3]
mov ebx, esi
add esi, 1
mov byte [ebx], dl
mov dword [esp + 0xc], esi
jmp 0x404f84
mov edx, dword [esp + 0xc]
mov byte [edx], 0
lea eax, [eax - 0x12]
lea ebx, [edx + 1]
mov dword [esp + 0x24], ebx
cmp eax, 0xff
jbe 0x404f77
mov ebx, dword [esp + 0x28]
neg ebx
add ebx, 0x13
mov eax, 0x80808081
imul ebx
add edx, ebx
sar edx, 7
sar ebx, 0x1f
sub ebx, edx
mov dword [esp], ebx
cmp ebx, 0x1f
jb 0x40529b
mov eax, ebx
mov ebx, dword [esp + 0x24]
and ebx, 0xf
jne 0x404f12
xor edx, edx
jmp 0x404f2a
mov esi, dword [esp + 0x24]
neg ebx
add ebx, 0x10
sub eax, ebx
xor edx, edx
mov byte [edx + esi], 0
add edx, 1
cmp edx, ebx
jb 0x404f1f
mov ebx, dword [esp + 0x24]
and eax, 0xf
neg eax
add eax, dword [esp]
pxor xmm0, xmm0
movdqa xmmword [edx + ebx], xmm0
add edx, 0x10
cmp edx, eax
jb 0x404f36
mov eax, dword [esp]
cmp edx, eax
jae 0x404f5f
mov ebx, dword [esp]
mov eax, dword [esp + 0x24]
mov byte [edx + eax], 0
add edx, 1
cmp edx, ebx
jb 0x404f54
mov esi, dword [esp]
mov eax, dword [esp + 0x28]
add dword [esp + 0x24], esi
mov edi, esi
shl edi, 8
sub edi, esi
neg edi
lea eax, [edi + eax - 0x12]
mov ebx, dword [esp + 0x24]
lea edx, [ebx + 1]
mov dword [esp + 0xc], edx
mov byte [ebx], al
mov edx, dword [esp + 0x10]
mov esi, dword [esp + 0xc]
mov ebx, dword [esp + 0x28]
movzx eax, byte [edx]
mov byte [esi], al
add ebx, 0xffffffff
add edx, 1
add esi, 1
test ebx, ebx
jne 0x404f90
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], esi
mov eax, dword [esp + 0x1c]
movzx edx, byte [eax + 3]
add ecx, 4
movzx ebx, byte [ecx - 1]
cmp edx, ebx
jne 0x40500c
movzx edx, byte [eax + 4]
add ecx, 1
movzx ebx, byte [ecx - 1]
cmp edx, ebx
jne 0x40500c
movzx edx, byte [eax + 5]
add ecx, 1
movzx ebx, byte [ecx - 1]
cmp edx, ebx
jne 0x40500c
movzx edx, byte [eax + 6]
add ecx, 1
movzx ebx, byte [ecx - 1]
cmp edx, ebx
jne 0x40500c
movzx edx, byte [eax + 7]
add ecx, 1
movzx ebx, byte [ecx - 1]
cmp edx, ebx
jne 0x40500c
movzx edx, byte [eax + 8]
add ecx, 1
movzx ebx, byte [ecx - 1]
cmp edx, ebx
je 0x4050aa
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
add ecx, 0xffffffff
neg eax
add eax, ecx
cmp edx, 0x800
mov dword [esp + 0x10], eax
ja 0x405055
mov esi, dword [esp + 0xc]
add edx, 0xffffffff
add eax, 0xffffffff
shl eax, 5
mov ebx, edx
and ebx, 7
add ebx, ebx
add ebx, ebx
or eax, ebx
mov byte [esi], al
shr edx, 3
lea edi, [esi + 1]
add esi, 2
mov dword [esp + 0xc], esi
mov byte [edi], dl
jmp 0x405243
mov eax, edx
cmp eax, 0x4000
ja 0x40507d
mov eax, dword [esp + 0x10]
mov ebx, dword [esp + 0xc]
add dword [esp + 0x14], 0xffffffff
add eax, 0xfffffffe
or eax, 0xffffff20
lea edx, [ebx + 1]
mov byte [ebx], al
jmp 0x40522b
mov edx, dword [esp + 0x10]
mov ebx, dword [esp + 0xc]
add eax, 0xffffc000
add edx, 0xfffffffe
mov dword [esp + 0x14], eax
and eax, 0x4000
shr eax, 0xb
or eax, 0xffffff10
or eax, edx
lea edx, [ebx + 1]
mov byte [ebx], al
jmp 0x40522b
mov eax, dword [esp + 4]
add dword [esp + 0x1c], 9
cmp ecx, eax
jae 0x4050d9
mov ebx, dword [esp + 0x1c]
mov esi, eax
movzx eax, byte [ebx]
movzx edx, byte [ecx]
cmp eax, edx
jne 0x4052a9
add ebx, 1
add ecx, 1
cmp ecx, esi
jb 0x4050bd
mov dword [esp + 4], esi
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
neg eax
add eax, ecx
cmp edx, 0x4000
mov dword [esp + 0x10], eax
ja 0x405125
add dword [esp + 0x14], 0xffffffff
cmp eax, 0x21
ja 0x405111
mov ebx, dword [esp + 0xc]
add eax, 0xfffffffe
or eax, 0xffffff20
lea edx, [ebx + 1]
mov byte [ebx], al
jmp 0x40522b
mov edx, dword [esp + 0xc]
add dword [esp + 0x10], 0xffffffdf
lea eax, [edx + 1]
mov dword [esp], eax
mov byte [edx], 0x20
jmp 0x40517c
add dword [esp + 0x14], 0xffffc000
cmp eax, 9
ja 0x40515a
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
mov ebx, dword [esp + 0xc]
and eax, 0x4000
shr eax, 0xb
or eax, 0xffffff10
add edx, 0xfffffffe
or eax, edx
lea edx, [ebx + 1]
mov byte [ebx], al
jmp 0x40522b
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0xc]
add dword [esp + 0x10], 0xfffffff7
and eax, 0x4000
shr eax, 0xb
or eax, 0xffffff10
lea esi, [edx + 1]
mov dword [esp], esi
mov byte [edx], al
mov eax, dword [esp + 0x10]
cmp eax, 0xff
jbe 0x40521f
mov ebx, eax
neg ebx
add ebx, 1
mov eax, 0x80808081
imul ebx
add edx, ebx
sar edx, 7
sar ebx, 0x1f
sub ebx, edx
mov dword [esp + 0x1c], ebx
cmp ebx, 0x1f
jb 0x4052a2
mov eax, ebx
mov ebx, dword [esp]
and ebx, 0xf
jne 0x4051be
xor edx, edx
jmp 0x4051d5
mov esi, dword [esp]
neg ebx
add ebx, 0x10
sub eax, ebx
xor edx, edx
mov byte [edx + esi], 0
add edx, 1
cmp edx, ebx
jb 0x4051ca
mov ebx, dword [esp]
and eax, 0xf
neg eax
add eax, dword [esp + 0x1c]
pxor xmm0, xmm0
movdqa xmmword [edx + ebx], xmm0
add edx, 0x10
cmp edx, eax
jb 0x4051e1
mov eax, dword [esp + 0x1c]
cmp edx, eax
jae 0x40520b
mov ebx, dword [esp + 0x1c]
mov eax, dword [esp]
mov byte [edx + eax], 0
add edx, 1
cmp edx, ebx
jb 0x405200
mov eax, dword [esp + 0x1c]
add dword [esp], eax
mov edx, eax
shl edx, 8
sub edx, eax
neg edx
add dword [esp + 0x10], edx
mov ebx, dword [esp]
mov eax, dword [esp + 0x10]
lea edx, [ebx + 1]
mov byte [ebx], al
mov eax, dword [esp + 0x14]
lea ebx, [eax + eax]
add ebx, ebx
mov byte [edx], bl
shr eax, 6
lea esi, [edx + 2]
mov dword [esp + 0xc], esi
mov byte [edx + 1], al
mov eax, dword [esp + 0x18]
mov dword [esp + 0x10], ecx
cmp ecx, eax
jb 0x404d78
mov eax, ecx
mov edi, esi
mov edx, dword [esp + 4]
mov ebx, dword [esp + 8]
jmp 0x405286
mov edx, dword [ebp + 0x18]
mov dword [eax + edx], ecx
mov eax, dword [esp + 0x18]
add ecx, 1
cmp ecx, eax
jb 0x404d78
mov eax, dword [esp + 0x10]
mov edi, dword [esp + 0xc]
mov edx, dword [esp + 4]
mov ebx, dword [esp + 8]
mov ecx, dword [ebp + 0x14]
sub edi, ebx
mov dword [ecx], edi
sub edx, eax
mov eax, edx
add esp, 0x34
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret
xor edx, edx
jmp 0x404f4d
xor edx, edx
jmp 0x4051f9
mov dword [esp + 4], esi
jmp 0x4050d9
push ebp
mov ebp, esp
and esp, 0xfffffff0
push edi
push esi
push ebx
sub esp, 0x34
mov ebx, ecx
mov ecx, edx
lea edx, [eax + ecx]
mov dword [esp + 0x20], eax
lea edi, [eax + ecx - 0xd]
mov dword [esp + 0x18], edi
mov edi, ebx
lea ecx, [eax + 4]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], edi
mov dword [esp + 4], edx
mov dword [esp + 8], ebx
movzx edx, byte [ecx + 3]
movzx ebx, byte [ecx + 2]
mov eax, edx
mov dword [esp + 0x28], ebx
shl eax, 6
xor eax, ebx
shl eax, 5
movzx esi, byte [ecx + 1]
xor eax, esi
shl eax, 5
movzx edi, byte [ecx]
xor eax, edi
lea ebx, [eax + eax]
add ebx, ebx
add ebx, ebx
add ebx, ebx
add ebx, ebx
add ebx, eax
shr ebx, 5
and ebx, 0x3fff
lea eax, [ebx + ebx]
mov dword [esp + 0x24], ebx
add eax, eax
mov ebx, dword [ebp + 0x18]
mov ebx, dword [ebx + eax]
mov esi, dword [esp + 0x20]
cmp ebx, esi
mov dword [esp + 0x1c], ebx
jb 0x4057a9
mov ebx, ecx
sub ebx, dword [esp + 0x1c]
mov dword [esp + 0x14], ebx
je 0x4057a9
cmp ebx, 0xbfff
ja 0x4057a9
cmp ebx, 0x800
jbe 0x4053cc
mov ebx, dword [esp + 0x1c]
movzx esi, byte [ebx + 3]
cmp esi, edx
je 0x4053cc
mov eax, dword [esp + 0x24]
and eax, 0x7ff
xor eax, 0x201f
add eax, eax
lea eax, [eax + eax]
mov ebx, dword [ebp + 0x18]
mov esi, dword [ebx + eax]
mov edi, dword [esp + 0x20]
cmp esi, edi
mov dword [esp + 0x1c], esi
jb 0x4057a9
mov ebx, ecx
sub ebx, dword [esp + 0x1c]
mov dword [esp + 0x14], ebx
je 0x4057a9
cmp ebx, 0xbfff
ja 0x4057a9
cmp ebx, 0x800
jbe 0x4053cc
mov ebx, esi
movzx esi, byte [ebx + 3]
cmp esi, edx
jne 0x4057a9
mov edx, dword [esp + 0x1c]
movzx ebx, word [edx]
movzx esi, word [ecx]
cmp ebx, esi
jne 0x4057a9
movzx ebx, byte [edx + 2]
mov esi, dword [esp + 0x28]
cmp ebx, esi
jne 0x4057a9
mov esi, dword [ebp + 0x18]
mov dword [eax + esi], ecx
mov eax, ecx
sub eax, dword [esp + 0x10]
mov dword [esp + 0x28], eax
je 0x40550e
cmp eax, 3
ja 0x405415
mov edx, dword [esp + 0xc]
or byte [edx - 2], al
jmp 0x4054ee
cmp eax, 0x12
ja 0x40542f
lea edx, [eax - 3]
mov esi, dword [esp + 0xc]
mov ebx, esi
inc esi
mov dword [esp + 0xc], esi
mov byte [ebx], dl
jmp 0x4054ee
lea eax, [eax - 0x12]
mov edx, dword [esp + 0xc]
mov byte [edx], 0
lea ebx, [edx + 1]
cmp eax, 0xff
mov dword [esp + 0x24], ebx
jbe 0x4054e1
mov ebx, dword [esp + 0x28]
neg ebx
add ebx, 0x13
mov eax, 0x80808081
imul ebx
add edx, ebx
sar edx, 7
sar ebx, 0x1f
sub ebx, edx
mov dword [esp], ebx
cmp ebx, 0xf
jb 0x4057e1
mov eax, ebx
mov ebx, dword [esp + 0x24]
and ebx, 7
jne 0x405480
xor edx, edx
jmp 0x405496
neg ebx
add ebx, 8
sub eax, ebx
xor edx, edx
mov esi, dword [esp + 0x24]
mov byte [edx + esi], 0
inc edx
cmp edx, ebx
jb 0x40548d
and eax, 7
neg eax
mov ebx, dword [esp + 0x24]
add eax, dword [esp]
pxor mm0, mm0
movq qword [edx + ebx], mm0
add edx, 8
cmp edx, eax
jb 0x4054a5
emms
mov eax, dword [esp]
cmp edx, eax
jae 0x4054c9
mov ebx, dword [esp]
mov eax, dword [esp + 0x24]
mov byte [edx + eax], 0
inc edx
cmp edx, ebx
jb 0x4054c0
mov esi, dword [esp]
mov edi, esi
shl edi, 8
add dword [esp + 0x24], esi
sub edi, esi
neg edi
mov eax, dword [esp + 0x28]
lea eax, [edi + eax - 0x12]
mov ebx, dword [esp + 0x24]
lea edx, [ebx + 1]
mov dword [esp + 0xc], edx
mov byte [ebx], al
mov edx, dword [esp + 0x10]
mov esi, dword [esp + 0xc]
mov ebx, dword [esp + 0x28]
movzx eax, byte [edx]
dec ebx
inc edx
mov byte [esi], al
inc esi
test ebx, ebx
jne 0x4054fa
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], esi
add ecx, 4
movzx ebx, byte [ecx - 1]
mov eax, dword [esp + 0x1c]
movzx edx, byte [eax + 3]
cmp edx, ebx
jne 0x405566
inc ecx
movzx ebx, byte [ecx - 1]
movzx edx, byte [eax + 4]
cmp edx, ebx
jne 0x405566
inc ecx
movzx ebx, byte [ecx - 1]
movzx edx, byte [eax + 5]
cmp edx, ebx
jne 0x405566
inc ecx
movzx ebx, byte [ecx - 1]
movzx edx, byte [eax + 6]
cmp edx, ebx
jne 0x405566
inc ecx
movzx ebx, byte [ecx - 1]
movzx edx, byte [eax + 7]
cmp edx, ebx
jne 0x405566
inc ecx
movzx ebx, byte [ecx - 1]
movzx edx, byte [eax + 8]
cmp edx, ebx
je 0x4055fd
dec ecx
mov eax, dword [esp + 0x10]
neg eax
add eax, ecx
mov edx, dword [esp + 0x14]
cmp edx, 0x800
mov dword [esp + 0x10], eax
ja 0x4055a9
dec edx
dec eax
shl eax, 5
mov ebx, edx
and ebx, 7
add ebx, ebx
add ebx, ebx
or eax, ebx
mov esi, dword [esp + 0xc]
shr edx, 3
mov byte [esi], al
lea edi, [esi + 1]
add esi, 2
mov dword [esp + 0xc], esi
mov byte [edi], dl
jmp 0x40578b
mov eax, edx
cmp eax, 0x4000
ja 0x4055d0
dec dword [esp + 0x14]
mov eax, dword [esp + 0x10]
add eax, 0xfffffffe
or eax, 0xffffff20
mov ebx, dword [esp + 0xc]
lea edx, [ebx + 1]
mov byte [ebx], al
jmp 0x405773
add eax, 0xffffc000
mov edx, dword [esp + 0x10]
mov dword [esp + 0x14], eax
and eax, 0x4000
shr eax, 0xb
or eax, 0xffffff10
add edx, 0xfffffffe
or eax, edx
mov ebx, dword [esp + 0xc]
lea edx, [ebx + 1]
mov byte [ebx], al
jmp 0x405773
add dword [esp + 0x1c], 9
mov eax, dword [esp + 4]
cmp ecx, eax
jae 0x405628
mov ebx, dword [esp + 0x1c]
mov esi, eax
movzx eax, byte [ebx]
movzx edx, byte [ecx]
cmp eax, edx
jne 0x4057ef
inc ebx
inc ecx
cmp ecx, esi
jb 0x405610
mov dword [esp + 4], esi
mov eax, dword [esp + 0x10]
neg eax
add eax, ecx
mov dword [esp + 0x10], eax
mov edx, dword [esp + 0x14]
cmp edx, 0x4000
ja 0x405673
dec dword [esp + 0x14]
cmp eax, 0x21
ja 0x40565f
add eax, 0xfffffffe
or eax, 0xffffff20
mov ebx, dword [esp + 0xc]
lea edx, [ebx + 1]
mov byte [ebx], al
jmp 0x405773
add dword [esp + 0x10], 0xffffffdf
mov edx, dword [esp + 0xc]
lea eax, [edx + 1]
mov dword [esp], eax
mov byte [edx], 0x20
jmp 0x4056ca
add dword [esp + 0x14], 0xffffc000
cmp eax, 9
ja 0x4056a8
mov eax, dword [esp + 0x14]
and eax, 0x4000
shr eax, 0xb
or eax, 0xffffff10
mov edx, dword [esp + 0x10]
add edx, 0xfffffffe
or eax, edx
mov ebx, dword [esp + 0xc]
mov byte [ebx], al
lea edx, [ebx + 1]
jmp 0x405773
add dword [esp + 0x10], 0xfffffff7
mov eax, dword [esp + 0x14]
and eax, 0x4000
shr eax, 0xb
or eax, 0xffffff10
mov edx, dword [esp + 0xc]
lea esi, [edx + 1]
mov dword [esp], esi
mov byte [edx], al
mov eax, dword [esp + 0x10]
cmp eax, 0xff
jbe 0x405767
mov ebx, eax
neg ebx
inc ebx
mov eax, 0x80808081
imul ebx
add edx, ebx
sar edx, 7
sar ebx, 0x1f
sub ebx, edx
mov dword [esp + 0x1c], ebx
cmp ebx, 0xf
jb 0x4057e8
mov eax, ebx
mov ebx, dword [esp]
and ebx, 7
jne 0x40570a
xor edx, edx
jmp 0x40571f
neg ebx
add ebx, 8
sub eax, ebx
xor edx, edx
mov esi, dword [esp]
mov byte [edx + esi], 0
inc edx
cmp edx, ebx
jb 0x405716
and eax, 7
neg eax
mov ebx, dword [esp]
add eax, dword [esp + 0x1c]
pxor mm0, mm0
movq qword [edx + ebx], mm0
add edx, 8
cmp edx, eax
jb 0x40572e
emms
mov eax, dword [esp + 0x1c]
cmp edx, eax
jae 0x405753
mov ebx, dword [esp + 0x1c]
mov eax, dword [esp]
mov byte [edx + eax], 0
inc edx
cmp edx, ebx
jb 0x40574a
mov eax, dword [esp + 0x1c]
mov edx, eax
shl edx, 8
add dword [esp], eax
sub edx, eax
neg edx
add dword [esp + 0x10], edx
mov ebx, dword [esp]
lea edx, [ebx + 1]
mov eax, dword [esp + 0x10]
mov byte [ebx], al
mov eax, dword [esp + 0x14]
lea ebx, [eax + eax]
add ebx, ebx
mov byte [edx], bl
shr eax, 6
lea esi, [edx + 2]
mov dword [esp + 0xc], esi
mov byte [edx + 1], al
mov dword [esp + 0x10], ecx
mov eax, dword [esp + 0x18]
cmp ecx, eax
jb 0x4052e8
mov eax, ecx
mov edi, esi
mov edx, dword [esp + 4]
mov ebx, dword [esp + 8]
jmp 0x4057cc
mov edx, dword [ebp + 0x18]
mov dword [eax + edx], ecx
inc ecx
mov eax, dword [esp + 0x18]
cmp ecx, eax
jb 0x4052e8
mov eax, dword [esp + 0x10]
mov edi, dword [esp + 0xc]
mov edx, dword [esp + 4]
mov ebx, dword [esp + 8]
sub edi, ebx
mov ecx, dword [ebp + 0x14]
sub edx, eax
mov dword [ecx], edi
mov eax, edx
add esp, 0x34
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret
xor edx, edx
jmp 0x4054b9
xor edx, edx
jmp 0x405743
mov dword [esp + 4], esi
jmp 0x405628
push ebp
mov ebp, esp
and esp, 0xfffffff0
push edi
push esi
push ebx
sub esp, 0x34
mov ebx, edx
mov dword [esp + 0x18], eax
lea edx, [eax + ebx]
lea ebx, [eax + ebx - 0xd]
mov dword [esp + 0x14], ebx
mov edi, ecx
lea ebx, [eax + 4]
mov dword [esp + 0xc], eax
mov dword [esp + 8], edi
mov dword [esp + 4], edx
mov dword [esp], ecx
lea edx, [ebx + 3]
mov dword [esp + 0x1c], edx
movzx edx, byte [ebx + 3]
movzx ecx, byte [ebx + 2]
mov dword [esp + 0x28], ecx
mov eax, edx
shl eax, 6
xor eax, ecx
shl eax, 5
movzx esi, byte [ebx + 1]
xor eax, esi
shl eax, 5
movzx edi, byte [ebx]
xor eax, edi
lea ecx, [eax + eax]
add ecx, ecx
add ecx, ecx
add ecx, ecx
add ecx, ecx
add ecx, eax
shr ecx, 5
and ecx, 0x3fff
mov dword [esp + 0x24], ecx
lea eax, [ecx + ecx]
add eax, eax
mov ecx, dword [ebp + 0x18]
mov ecx, dword [ecx + eax]
mov dword [esp + 0x20], ecx
mov esi, dword [esp + 0x18]
cmp ecx, esi
jb 0x405c87
mov ecx, ebx
sub ecx, dword [esp + 0x20]
mov dword [esp + 0x10], ecx
je 0x405c87
cmp ecx, 0xbfff
ja 0x405c87
cmp ecx, 0x800
jbe 0x405914
mov ecx, dword [esp + 0x20]
movzx esi, byte [ecx + 3]
cmp esi, edx
je 0x405914
mov eax, dword [esp + 0x24]
and eax, 0x7ff
xor eax, 0x201f
add eax, eax
lea eax, [eax + eax]
mov ecx, dword [ebp + 0x18]
mov esi, dword [ecx + eax]
mov dword [esp + 0x20], esi
mov edi, dword [esp + 0x18]
cmp esi, edi
jb 0x405c87
mov ecx, ebx
sub ecx, dword [esp + 0x20]
mov dword [esp + 0x10], ecx
je 0x405c87
cmp ecx, 0xbfff
ja 0x405c87
cmp ecx, 0x800
jbe 0x405914
mov ecx, esi
movzx esi, byte [ecx + 3]
cmp esi, edx
jne 0x405c87
mov edx, dword [esp + 0x20]
movzx ecx, word [edx]
movzx esi, word [ebx]
cmp ecx, esi
jne 0x405c87
movzx ecx, byte [edx + 2]
mov esi, dword [esp + 0x28]
cmp ecx, esi
jne 0x405c87
mov edx, dword [ebp + 0x18]
mov dword [eax + edx], ebx
sub ebx, dword [esp + 0xc]
je 0x405a02
cmp ebx, 3
ja 0x405957
mov eax, dword [esp + 8]
or byte [eax - 2], bl
jmp 0x4059e6
cmp ebx, 0x12
ja 0x40596e
lea eax, [ebx - 3]
mov esi, dword [esp + 8]
mov edx, esi
inc esi
mov dword [esp + 8], esi
mov byte [edx], al
jmp 0x4059e6
lea eax, [ebx - 0x12]
mov dword [esp + 0x24], eax
mov esi, dword [esp + 8]
mov byte [esi], 0
neg eax
inc eax
mov dword [esp + 0x28], eax
cmp eax, 0xc80
jg 0x405cbe
mov eax, 0x80808081
mov ecx, dword [esp + 0x28]
imul ecx
add edx, ecx
sar edx, 7
sar ecx, 0x1f
sub ecx, edx
mov dword [esp + 0x28], ecx
test ecx, ecx
jle 0x4059bf
mov eax, 1
mov edx, esi
mov byte [eax + edx], 0
inc eax
cmp eax, ecx
jle 0x4059b2
mov dword [esp + 8], edx
mov edx, dword [esp + 8]
mov ecx, dword [esp + 0x28]
add edx, ecx
mov esi, ecx
shl esi, 8
sub esi, ecx
mov eax, dword [esp + 0x24]
sub eax, esi
add eax, 0xff
inc eax
lea edi, [edx + 2]
mov dword [esp + 8], edi
mov byte [edx + 1], al
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 8]
movzx eax, byte [edx]
mov byte [ecx], al
dec ebx
inc edx
inc ecx
test ebx, ebx
jne 0x4059ee
mov dword [esp + 0xc], edx
mov dword [esp + 8], ecx
mov edx, dword [esp + 0x1c]
lea ebx, [edx + 1]
mov eax, dword [esp + 0x20]
movzx ecx, byte [eax + 3]
movzx esi, byte [edx]
cmp ecx, esi
jne 0x405a80
mov edx, ebx
mov ebx, dword [esp + 0x1c]
lea ebx, [ebx + 2]
movzx ecx, byte [eax + 4]
movzx esi, byte [edx]
cmp ecx, esi
jne 0x405a80
mov edx, ebx
mov ebx, dword [esp + 0x1c]
lea ebx, [ebx + 3]
movzx ecx, byte [eax + 5]
movzx esi, byte [edx]
cmp ecx, esi
jne 0x405a80
mov edx, ebx
mov ebx, dword [esp + 0x1c]
lea ebx, [ebx + 4]
movzx ecx, byte [eax + 6]
movzx esi, byte [edx]
cmp ecx, esi
jne 0x405a80
mov edx, ebx
mov ebx, dword [esp + 0x1c]
lea ebx, [ebx + 5]
movzx ecx, byte [eax + 7]
movzx esi, byte [edx]
cmp ecx, esi
jne 0x405a80
mov edx, ebx
mov ebx, dword [esp + 0x1c]
lea ebx, [ebx + 6]
movzx ecx, byte [eax + 8]
movzx esi, byte [edx]
cmp ecx, esi
je 0x405b17
dec ebx
mov eax, dword [esp + 0xc]
neg eax
add eax, ebx
mov dword [esp + 0xc], eax
mov edx, dword [esp + 0x10]
cmp edx, 0x800
ja 0x405ac3
dec edx
dec eax
shl eax, 5
mov ecx, edx
and ecx, 7
add ecx, ecx
add ecx, ecx
or eax, ecx
mov esi, dword [esp + 8]
mov byte [esi], al
shr edx, 3
lea edi, [esi + 1]
add esi, 2
mov dword [esp + 8], esi
mov byte [edi], dl
jmp 0x405c6a
mov eax, edx
cmp eax, 0x4000
ja 0x405aea
dec dword [esp + 0x10]
mov eax, dword [esp + 0xc]
add eax, 0xfffffffe
or eax, 0xffffff20
mov ecx, dword [esp + 8]
lea edx, [ecx + 1]
mov byte [ecx], al
jmp 0x405c52
add eax, 0xffffc000
mov dword [esp + 0x10], eax
and eax, 0x4000
shr eax, 0xb
or eax, 0xffffff10
mov edx, dword [esp + 0xc]
add edx, 0xfffffffe
or eax, edx
mov ecx, dword [esp + 8]
lea edx, [ecx + 1]
mov byte [ecx], al
jmp 0x405c52
add dword [esp + 0x20], 9
mov eax, dword [esp + 4]
cmp ebx, eax
jae 0x405b42
mov ecx, dword [esp + 0x20]
mov esi, eax
movzx eax, byte [ecx]
movzx edx, byte [ebx]
cmp eax, edx
jne 0x405d1f
inc ecx
inc ebx
cmp ebx, esi
jb 0x405b2a
mov dword [esp + 4], esi
mov eax, dword [esp + 0xc]
neg eax
add eax, ebx
mov dword [esp + 0xc], eax
mov edx, dword [esp + 0x10]
cmp edx, 0x4000
ja 0x405b8e
dec dword [esp + 0x10]
cmp eax, 0x21
ja 0x405b79
add eax, 0xfffffffe
or eax, 0xffffff20
mov ecx, dword [esp + 8]
lea edx, [ecx + 1]
mov byte [ecx], al
jmp 0x405c52
add dword [esp + 0xc], 0xffffffdf
mov edx, dword [esp + 8]
lea eax, [edx + 1]
mov dword [esp + 0x20], eax
mov byte [edx], 0x20
jmp 0x405be6
add dword [esp + 0x10], 0xffffc000
cmp eax, 9
ja 0x405bc3
mov eax, dword [esp + 0x10]
and eax, 0x4000
shr eax, 0xb
or eax, 0xffffff10
mov edx, dword [esp + 0xc]
add edx, 0xfffffffe
or eax, edx
mov ecx, dword [esp + 8]
lea edx, [ecx + 1]
mov byte [ecx], al
jmp 0x405c52
add dword [esp + 0xc], 0xfffffff7
mov eax, dword [esp + 0x10]
and eax, 0x4000
shr eax, 0xb
or eax, 0xffffff10
mov edx, dword [esp + 8]
lea esi, [edx + 1]
mov dword [esp + 0x20], esi
mov byte [edx], al
mov eax, dword [esp + 0xc]
neg eax
inc eax
mov dword [esp + 0x24], eax
cmp eax, 0xc80
jg 0x405ceb
mov eax, 0x80808081
mov ecx, dword [esp + 0x24]
imul ecx
add edx, ecx
sar edx, 7
sar ecx, 0x1f
sub ecx, edx
mov dword [esp + 0x24], ecx
test ecx, ecx
jle 0x405c2c
mov eax, 1
mov edx, dword [esp + 0x20]
mov byte [eax + edx - 1], 0
inc eax
cmp eax, ecx
jle 0x405c22
mov esi, dword [esp + 0x20]
mov edx, dword [esp + 0x24]
add esi, edx
add esi, 0xffffffff
mov ecx, edx
shl ecx, 8
sub ecx, edx
mov eax, dword [esp + 0xc]
sub eax, ecx
add eax, 0xff
inc eax
lea edx, [esi + 2]
mov byte [esi + 1], al
mov eax, dword [esp + 0x10]
lea ecx, [eax + eax]
add ecx, ecx
mov byte [edx], cl
shr eax, 6
lea esi, [edx + 2]
mov dword [esp + 8], esi
mov byte [edx + 1], al
mov dword [esp + 0xc], ebx
mov eax, dword [esp + 0x14]
cmp ebx, eax
jb 0x405829
mov eax, ebx
mov edi, esi
mov edx, dword [esp + 4]
mov ecx, dword [esp]
jmp 0x405ca9
mov edx, dword [ebp + 0x18]
mov dword [eax + edx], ebx
inc ebx
mov eax, dword [esp + 0x14]
cmp ebx, eax
jb 0x405829
mov eax, dword [esp + 0xc]
mov edi, dword [esp + 8]
mov edx, dword [esp + 4]
mov ecx, dword [esp]
sub edi, ecx
mov ecx, dword [ebp + 0x14]
mov dword [ecx], edi
sub edx, eax
mov eax, edx
add esp, 0x34
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret
mov eax, 0x80808081
mov ecx, dword [esp + 0x28]
imul ecx
add edx, ecx
sar edx, 7
sar ecx, 0x1f
sub ecx, edx
mov dword [esp + 0x28], ecx
add esi, 1
push ecx
push 0
push esi
call fcn.004910c4
add esp, 0xc
jmp 0x4059bf
mov eax, 0x80808081
mov ecx, dword [esp + 0x24]
imul ecx
add edx, ecx
sar edx, 7
sar ecx, 0x1f
sub ecx, edx
mov dword [esp + 0x24], ecx
mov esi, dword [esp + 0x20]
add esi, 1
add esi, 0xffffffff
push ecx
push 0
push esi
call fcn.004910c4
add esp, 0xc
jmp 0x405c2c
mov dword [esp + 4], esi
jmp 0x405b42