Function at 0x665de0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x84
push ebx
push esi
push edi
mov edi, ecx
mov dword [ebp - 0x24], edi
mov esi, dword [edi + 0x85b8]
mov edx, dword [esi]
mov ebx, dword [esi + 0xc]
mov dword [ebp - 0xc], ebx
test edx, edx
je 0x665e08
mov eax, dword [edi + 8]
jmp 0x665e0c
mov eax, dword [esi + 0x24]
inc eax
mov ecx, dword [edi + 0x8614]
dec ecx
shl ecx, 4
sub eax, ecx
cmp eax, 0x10
jae 0x665e36
test edx, edx
je 0x665e2b
mov eax, dword [edi + 8]
sub eax, ecx
mov dword [ebp - 0x28], eax
jmp 0x665e3d
mov eax, dword [esi + 0x24]
inc eax
sub eax, ecx
mov dword [ebp - 0x28], eax
jmp 0x665e3d
mov dword [ebp - 0x28], 0x10
test edx, edx
je 0x665e46
mov eax, dword [edi + 4]
jmp 0x665e4a
mov eax, dword [esi + 0x1c]
inc eax
mov dword [ebp - 0x2c], eax
mov eax, dword [esi + 0x20]
cmp ecx, eax
jbe 0x665e58
xor eax, eax
jmp 0x665e5b
and eax, 0xf
dec eax
add eax, ebx
xor edx, edx
div ebx
xor edx, edx
mov edi, dword [edi + 0x8550]
mov dword [ebp - 0x14], edi
imul eax, ebx
mov dword [ebp - 0x38], eax
mov eax, dword [esi + 0x18]
dec eax
add eax, ebx
div ebx
imul eax, ebx
mov dword [ebp - 4], eax
test edi, edi
jne 0x665e89
xor edx, edx
jmp 0x665e8f
mov eax, dword [ebp - 0x24]
mov edx, dword [eax + 0xc]
mov dword [ebp - 0x50], edx
mov edx, dword [ebp - 0x24]
mov dword [ebp - 0x7c], 2
mov eax, dword [edx + 0x10]
mov dword [ebp - 0x40], eax
mov eax, dword [edx + 0x1c]
neg eax
sbb eax, eax
and eax, 2
sub dword [ebp - 0x7c], eax
mov dword [ebp - 0x80], eax
mov al, byte [edx + 0x808c]
mov byte [ebp - 0x41], al
mov al, byte [edx + 0x808d]
mov byte [ebp - 0x71], al
mov eax, dword [edx + 0x86dc]
mov dword [ebp - 0x68], eax
mov eax, dword [edx + 0x86e0]
mov dword [ebp - 0x6c], eax
mov eax, dword [edx + 0x86e4]
mov dword [ebp - 0x4c], eax
mov eax, dword [esi + 0x28]
mov dword [ebp - 0x58], eax
xor edx, edx
mov eax, ecx
div ebx
mov ecx, dword [esi + 0x2c]
mov dword [ebp - 0x1c], 0
mov dword [ebp - 0x3c], edx
mov edx, dword [ebp - 0x24]
lea eax, [ecx + eax*4]
mov dword [ebp - 0x60], eax
cmp ebx, 0x10
jb 0x665f2e
mov eax, dword [edx + 0x64]
test eax, eax
jne 0x665f16
mov dword [ebp - 8], 0x10
jmp 0x665f50
mov ecx, 0x22
mov dword [ebp - 0x30], 0x17
cmp eax, 1
cmove ecx, dword [ebp - 0x30]
mov dword [ebp - 8], ecx
jmp 0x665f50
cmp ebx, 4
jb 0x665f49
cmp dword [edx + 0x64], 0
mov ecx, 0x5d
mov eax, 0x40
cmove ecx, eax
mov dword [ebp - 8], ecx
jmp 0x665f50
mov dword [ebp - 8], 0x102
mov eax, dword [edx + 0x855c]
mov ecx, eax
neg ecx
sbb ecx, ecx
and ecx, 3
add ecx, 8
mov dword [ebp - 0x10], ecx
test eax, eax
je 0x665f86
cmp ebx, 0x10
jb 0x665f86
cmp edi, 1
je 0x665f7f
cmp edi, 2
je 0x665f7f
mov eax, 1
jmp 0x665f88
mov eax, 2
jmp 0x665f88
xor eax, eax
sub ecx, eax
mov eax, 1
mov dword [ebp - 0x70], ecx
cmp ebx, eax
jbe 0x665fa2
xor ecx, ecx
rol eax, 1
inc ecx
cmp eax, ebx
jb 0x665f98
mov dword [ebp - 0x1c], ecx
mov eax, dword [ebp - 0x24]
cmp dword [eax + 0x40], 4
jge 0x665fb0
mov ecx, dword [eax + 0x28]
jmp 0x665fb3
mov ecx, dword [eax + 0x30]
mov eax, dword [ebp - 0x28]
sub eax, dword [ebp - 0x38]
xor edx, edx
mov dword [ebp - 0x84], eax
div ebx
mov edx, ecx
mov ecx, dword [ebp - 0x24]
push eax
call fcn.00663ba0
add esp, 4
test eax, eax
je 0x665fdf
pop edi
pop esi
or eax, 0xffffffff
pop ebx
mov esp, ebp
pop ebp
ret
cmp dword [ebp - 0x3c], 0
jne case.default.0x66643b
mov edx, ecx
mov ecx, dword [edx + 0x8614]
shl ecx, 4
cmp ecx, dword [esi + 0x20]
jbe case.default.0x66643b
mov eax, dword [esi + 0x24]
add eax, 0x10
cmp ecx, eax
ja case.default.0x66643b
cmp edi, 2
je 0x666019
cmp edi, 1
jne 0x66626d
mov eax, dword [ebp - 0x50]
test eax, eax
je 0x666270
mov eax, dword [edx + 0x87dc]
mov dword [ebp - 0x64], eax
mov eax, dword [edx + 0x87e0]
mov dword [ebp - 0x48], eax
xor eax, eax
xor ecx, ecx
mov edx, ebx
shl edx, 4
mov dword [ebp - 0x30], edx
mov edx, dword [ebp - 0x2c]
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x18], ecx
jmp 0x666050
xor esi, esi
test edx, edx
je 0x6660c7
mov edx, esi
and edx, 0xfffffff0
cmp edi, 2
jne 0x666074
mov eax, esi
shr eax, 1
and eax, 7
movzx eax, byte [eax + ecx + 0x725ab8]
lea edi, [eax + edx*8]
jmp 0x66608b
mov ecx, esi
shr ecx, 1
and ecx, 7
shr eax, 1
movzx eax, byte [ecx + eax*8 + 0x725c08]
mov ecx, dword [ebp - 0x18]
lea edi, [eax + edx*4]
mov eax, esi
and eax, 0xf
shl edx, 4
movzx ecx, byte [eax + ecx + 0x725ab8]
mov eax, dword [ebp - 0x6c]
add ecx, edx
mov eax, dword [eax + edi*4]
mov edx, dword [ebp - 0x64]
add esi, ebx
mov dword [edx + ecx*4], eax
mov eax, dword [ebp - 0x4c]
mov edx, dword [ebp - 0x48]
mov eax, dword [eax + edi*4]
mov edi, dword [ebp - 0x14]
mov dword [edx + ecx*4], eax
mov edx, dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x20]
cmp esi, edx
jb 0x666056
add ecx, dword [ebp - 0x30]
add eax, ebx
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x18], ecx
cmp eax, 0x10
jb 0x666050
cmp ebx, 4
jne 0x66625e
cmp edi, 1
jne 0x66618a
xor eax, eax
mov dword [ebp - 0x14], eax
test edx, edx
je 0x66618a
lea ebx, [ebx]
mov ecx, dword [ebp - 0x64]
mov ebx, eax
mov edi, eax
and ebx, 0xf
and edi, 0xfffffff0
movzx edx, byte [ebx + 0x725ab8]
movzx eax, byte [ebx + str._____aed]
movzx esi, byte [ebx + 0x725af8]
shl edi, 4
add eax, edi
mov dword [ebp - 0x20], eax
add edx, edi
mov dword [ebp - 0x30], ebx
mov ecx, dword [ecx + edx*4]
mov ebx, dword [ebp - 0x64]
inc ecx
mov eax, dword [ebx + eax*4]
add eax, ecx
sar eax, 1
add esi, edi
mov ecx, ebx
mov ebx, dword [ebp - 0x48]
mov dword [ecx + esi*4], eax
mov ecx, dword [ebx + edx*4]
mov edx, dword [ebp - 0x20]
mov eax, dword [ebx + edx*4]
inc eax
add eax, ecx
sar eax, 1
mov dword [ebx + esi*4], eax
mov ebx, dword [ebp - 0x30]
mov esi, dword [ebp - 0x48]
movzx ecx, byte [ebx + str.0154pqut]
add ecx, edi
mov edi, dword [ebp - 0x64]
mov eax, dword [edi + edx*4]
mov dword [edi + ecx*4], eax
mov eax, dword [esi + edx*4]
mov dword [esi + ecx*4], eax
mov eax, dword [ebp - 0x14]
add eax, 8
mov dword [ebp - 0x14], eax
cmp eax, dword [ebp - 0x2c]
jb 0x666100
jmp 0x666192
mov esi, dword [ebp - 0x48]
mov edi, dword [ebp - 0x64]
xor edx, edx
mov eax, dword [ebp - 0x2c]
add eax, 0xfffffff8
xor ecx, ecx
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x4c], ecx
xor ebx, ebx
test eax, eax
je 0x66621f
mov esi, dword [ebp - 0x4c]
mov eax, ebx
and eax, 0xf
mov edx, ebx
movzx edi, byte [eax + ecx + 0x725ab8]
lea ecx, [ebx - 8]
and edx, 0xfffffff0
lea eax, [ecx - 4]
and eax, 0xf
and ecx, 0xf
movzx esi, byte [eax + esi + 0x725ab8]
mov eax, dword [ebp - 0x4c]
shl edx, 4
movzx eax, byte [ecx + eax + 0x725ab8]
add eax, edx
add edi, edx
add esi, edx
mov edx, dword [ebp - 0x64]
mov dword [ebp - 0x20], eax
mov ecx, dword [edx + eax*4]
mov eax, dword [edx + edi*4]
inc ecx
add eax, ecx
sar eax, 1
mov dword [edx + esi*4], eax
mov eax, dword [ebp - 0x48]
mov edx, dword [ebp - 0x20]
add ebx, 8
mov ecx, dword [eax + edx*4]
mov eax, dword [eax + edi*4]
inc ecx
add eax, ecx
mov ecx, dword [ebp - 0x48]
sar eax, 1
mov dword [ecx + esi*4], eax
mov ecx, dword [ebp - 0x4c]
cmp ebx, dword [ebp - 0x14]
jb 0x6661a6
mov edi, dword [ebp - 0x64]
mov esi, dword [ebp - 0x48]
lea eax, [ebx + 4]
and eax, 0xf
and ebx, 0xfffffff0
movzx ecx, byte [eax + ecx + 0x725ab8]
mov eax, dword [edi + edx*4]
shl ebx, 4
add ecx, ebx
mov dword [edi + ecx*4], eax
mov eax, dword [esi + edx*4]
mov dword [esi + ecx*4], eax
mov ecx, dword [ebp - 0x4c]
mov eax, dword [ebp - 0x14]
add ecx, 0x40
mov dword [ebp - 0x4c], ecx
cmp ecx, 0x100
jb 0x6661a0
mov ebx, dword [ebp - 0xc]
jmp 0x666264
mov edi, dword [ebp - 0x64]
mov esi, dword [ebp - 0x48]
mov edx, dword [ebp - 0x24]
mov dword [ebp - 0x6c], edi
mov dword [ebp - 0x4c], esi
mov eax, dword [ebp - 0x50]
mov edi, dword [ebp - 0x40]
cmp edi, 1
jne 0x6667ac
mov ecx, dword [ebp - 0x10]
mov esi, 0x80
mov eax, esi
shl eax, cl
cdq
idiv dword [ebp - 8]
mov dword [ebp - 0x3c], eax
mov eax, dword [ebp - 0x50]
cmp eax, 8
ja case.0x667201.1
jmp dword [eax*4 + 0x667bdc]
mov edx, dword [ebp - 0x38]
mov eax, edx
mov dword [ebp - 0x14], eax
cmp edx, dword [ebp - 0x28]
jae case.0x667201.1
shl edx, 4
mov ecx, ebx
shl ecx, 4
mov dword [ebp - 0x40], ecx
mov ecx, dword [ebp - 0x1c]
mov dword [ebp - 0x18], edx
mov edi, 0xff
lea esp, [esp]
mov edx, dword [ebp - 0x60]
mov esi, dword [ebp - 4]
shr eax, cl
mov dword [ebp - 0x50], esi
mov eax, dword [edx + eax*4]
mov edx, dword [ebp - 0x18]
mov dword [ebp - 0x30], eax
mov eax, esi
cmp eax, dword [ebp - 0x2c]
jae 0x6663c1
nop
mov eax, esi
and eax, 0xf
mov ecx, dword [ebp - 0x70]
movzx edx, byte [eax + edx + 0x725ab8]
mov eax, esi
mov esi, dword [ebp - 8]
and eax, 0xfffffff0
shl eax, 4
add edx, eax
mov eax, dword [ebp - 0x6c]
mov ebx, dword [eax + edx*4]
mov eax, dword [ebp - 0x4c]
imul ebx, esi
mov eax, dword [eax + edx*4]
imul eax, esi
sar eax, cl
neg ebx
sar ebx, cl
mov ecx, dword [ebp - 0x10]
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x68]
mov edx, dword [eax + edx*4]
add edx, dword [ebp - 0x3c]
mov eax, ebx
imul edx, esi
mov esi, dword [ebp - 0x20]
sar edx, cl
sar eax, 1
lea ecx, [esi + 1]
sar ecx, 1
sub edx, eax
mov eax, edx
sub eax, ecx
mov ecx, dword [ebp - 0x1c]
add ebx, eax
mov eax, dword [ebp - 0x50]
shr eax, cl
mov ecx, dword [ebp - 0x58]
add esi, ebx
mov dword [ebp - 0x20], esi
mov ecx, dword [ecx + eax*4]
mov eax, dword [ebp - 0x24]
add ecx, dword [eax + 0x80a8]
mov eax, esi
add ecx, dword [ebp - 0x30]
test eax, eax
jns 0x666376
xor eax, eax
jmp 0x66637e
cmp eax, 0xff
cmovg eax, edi
mov esi, dword [ebp - 0x80]
mov byte [ecx + esi], al
test edx, edx
jns 0x66638c
xor edx, edx
jmp 0x666391
cmp edx, edi
cmovg edx, edi
mov byte [ecx + 1], dl
test ebx, ebx
jns 0x66639c
xor ebx, ebx
jmp 0x6663a1
cmp ebx, edi
cmovg ebx, edi
mov eax, dword [ebp - 0x7c]
mov esi, dword [ebp - 0x50]
mov edx, dword [ebp - 0x18]
mov byte [ecx + eax], bl
mov ebx, dword [ebp - 0xc]
add esi, ebx
mov dword [ebp - 0x50], esi
cmp esi, dword [ebp - 0x2c]
jb 0x6662f0
mov ecx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x14]
add edx, dword [ebp - 0x40]
add eax, ebx
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x18], edx
cmp eax, dword [ebp - 0x28]
jb 0x6662d0
mov edi, dword [ebp - 8]
mov esi, dword [ebp - 4]
mov ebx, dword [ebp - 0xc]
mov ecx, dword [ebp - 0x10]
mov eax, dword [ebp - 0x24]
cmp byte [eax + 0x70], 0
jbe 0x666404
mov edx, dword [ebp - 0x1c]
push ecx
push edi
mov ecx, eax
call fcn.00667cb0
add esp, 8
test eax, eax
jne 0x665fd5
mov eax, dword [ebp - 0x84]
dec eax
xor edx, edx
add eax, ebx
div ebx
mov edx, dword [ebp - 0x24]
cmp dword [edx + 0xc], 7
mov dword [edx + 0x80bc], eax
jne case.default.0x66643b
cmp dword [edx + 0x5c], 0
jne case.default.0x66643b
mov eax, dword [edx + 0x10]
dec eax
cmp eax, 6
ja case.default.0x66643b
jmp dword [eax*4 + 0x667c00]
mov esi, dword [ebp - 4]
push esi
push dword [ebp - 0x38]
push ecx
mov edi, dword [ebp - 8]
mov ecx, dword [ebp - 0x24]
mov edx, edi
call fcn.006683a0
add esp, 0xc
jmp 0x6663de
mov edx, dword [ebp - 0x38]
mov esi, dword [ebp - 4]
mov eax, edx
mov dword [ebp - 0x14], eax
cmp edx, dword [ebp - 0x28]
jae 0x66661f
shl edx, 4
mov ecx, ebx
shl ecx, 4
mov dword [ebp - 0x40], ecx
mov ecx, dword [ebp - 0x1c]
mov dword [ebp - 0x18], edx
mov edx, dword [ebp - 0x60]
shr eax, cl
mov edi, esi
mov eax, dword [edx + eax*4]
mov edx, dword [ebp - 0x18]
mov dword [ebp - 0x30], eax
cmp esi, dword [ebp - 0x2c]
jae 0x666608
lea ebx, [ebx]
mov esi, dword [ebp - 8]
mov ecx, dword [ebp - 0x70]
mov eax, edi
and eax, 0xf
movzx edx, byte [eax + edx + 0x725ab8]
mov eax, edi
and eax, 0xfffffff0
shl eax, 4
add edx, eax
mov eax, dword [ebp - 0x6c]
mov ebx, dword [eax + edx*4]
mov eax, dword [ebp - 0x4c]
imul ebx, esi
mov eax, dword [eax + edx*4]
imul eax, esi
sar eax, cl
sar ebx, cl
mov ecx, dword [ebp - 0x10]
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x68]
neg ebx
mov edx, dword [eax + edx*4]
imul edx, esi
mov esi, dword [ebp - 0x20]
sar edx, cl
mov eax, ebx
sar eax, 1
lea ecx, [esi + 1]
sub edx, eax
sar ecx, 1
mov dword [ebp - 0x3c], edx
sub edx, ecx
mov ecx, dword [ebp - 0x1c]
mov eax, edi
shr eax, cl
mov ecx, dword [ebp - 0x58]
add ebx, edx
add esi, ebx
mov dword [ebp - 0x20], esi
mov edx, dword [ecx + eax*4]
mov eax, dword [ebp - 0x24]
add edx, dword [eax + 0x80a8]
add edx, dword [ebp - 0x30]
test ebx, ebx
jg 0x666523
xor al, al
mov byte [edx], al
jmp 0x666536
mov eax, ebx
sar eax, 7
cmp eax, 1
jle 0x666532
or bl, 0x80
jmp 0x666534
mov al, 1
mov byte [edx], bl
mov ecx, dword [ebp - 0x3c]
test ecx, ecx
jg 0x666544
xor bl, bl
mov byte [edx + 1], bl
jmp 0x666558
mov ebx, ecx
sar ebx, 7
cmp ebx, 1
jle 0x666553
or cl, 0x80
jmp 0x666555
mov bl, 1
mov byte [edx + 1], cl
mov ecx, dword [ebp - 0x20]
test ecx, ecx
jg 0x666569
xor cl, cl
mov byte [edx + 2], cl
mov dword [ebp - 0x48], ecx
jmp 0x666585
mov dword [ebp - 0x48], ecx
sar dword [ebp - 0x48], 7
cmp dword [ebp - 0x48], 1
jle 0x66657b
or cl, 0x80
jmp 0x66657f
mov byte [ebp - 0x48], 1
mov byte [edx + 2], cl
mov ecx, dword [ebp - 0x48]
movzx esi, al
cmp al, bl
ja 0x66658f
movzx esi, bl
movzx ecx, cl
cmp esi, ecx
jle 0x6665a0
movzx ecx, al
cmp al, bl
ja 0x6665a0
movzx ecx, bl
mov byte [edx + 3], cl
cmp cl, al
jbe 0x6665b8
sub cl, al
movzx eax, byte [edx]
lea eax, [eax*2 + 1]
inc ecx
sar eax, cl
mov byte [edx], al
mov al, byte [edx + 3]
cmp al, bl
jbe 0x6665d4
mov cl, al
movzx eax, byte [edx + 1]
sub cl, bl
lea eax, [eax*2 + 1]
inc ecx
sar eax, cl
mov byte [edx + 1], al
mov cl, byte [edx + 3]
mov eax, dword [ebp - 0x48]
cmp cl, al
jbe 0x6665f1
sub cl, al
movzx eax, byte [edx + 2]
lea eax, [eax*2 + 1]
inc ecx
sar eax, cl
mov byte [edx + 2], al
mov ebx, dword [ebp - 0xc]
mov edx, dword [ebp - 0x18]
add edi, ebx
cmp edi, dword [ebp - 0x2c]
jb 0x6664a0
mov ecx, dword [ebp - 0x1c]
mov esi, dword [ebp - 4]
mov eax, dword [ebp - 0x14]
add edx, dword [ebp - 0x40]
add eax, ebx
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x18], edx
cmp eax, dword [ebp - 0x28]
jb 0x666481
mov edi, dword [ebp - 8]
jmp 0x6663de
mov ecx, dword [ebp - 0x70]
mov eax, dword [ebp - 0x24]
mov edi, dword [ebp - 8]
mov eax, dword [eax + 0x86e8]
shl esi, cl
mov dword [ebp - 0x30], eax
mov eax, esi
cdq
idiv edi
mov edx, dword [ebp - 0x38]
sar eax, 1
mov dword [ebp - 0x50], eax
mov eax, edx
mov dword [ebp - 0x40], eax
cmp edx, dword [ebp - 0x28]
jae case.0x666f84.1
shl edx, 4
mov ecx, ebx
shl ecx, 4
mov dword [ebp - 0x34], ecx
mov ecx, dword [ebp - 0x1c]
mov dword [ebp - 0x18], edx
mov edi, 0xff
lea esp, [esp]
mov edx, dword [ebp - 0x60]
mov esi, dword [ebp - 4]
shr eax, cl
mov dword [ebp - 0x14], esi
mov eax, dword [edx + eax*4]
mov edx, dword [ebp - 0x18]
mov dword [ebp - 0x64], eax
mov eax, esi
cmp eax, dword [ebp - 0x2c]
jae 0x666790
nop
mov ebx, dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x10]
mov eax, esi
and eax, 0xf
movzx edx, byte [eax + edx + 0x725ab8]
mov eax, esi
mov esi, dword [ebp - 8]
and eax, 0xfffffff0
shl eax, 4
add edx, eax
mov eax, dword [ebp - 0x68]
sub ebx, dword [eax + edx*4]
mov eax, dword [ebp - 0x6c]
imul ebx, esi
mov eax, dword [eax + edx*4]
imul eax, esi
sar ebx, cl
mov ecx, dword [ebp - 0x70]
sar eax, cl
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x4c]
mov eax, dword [eax + edx*4]
imul eax, esi
neg eax
sar eax, cl
mov dword [ebp - 0x48], eax
mov eax, dword [ebp - 0x30]
mov edx, dword [eax + edx*4]
add edx, dword [ebp - 0x50]
lea eax, [ebx + 1]
imul edx, esi
mov esi, dword [ebp - 0x20]
sar edx, cl
sar eax, 1
mov ecx, esi
sar ecx, 1
sub edx, eax
mov dword [ebp - 0x5c], edx
sub edx, ecx
add ebx, edx
mov edx, dword [ebp - 0x48]
mov eax, ebx
lea ecx, [edx + 1]
sar ecx, 1
sub eax, ecx
mov ecx, dword [ebp - 0x1c]
add esi, eax
mov dword [ebp - 0x20], esi
add edx, esi
mov esi, dword [ebp - 0x14]
mov eax, esi
shr eax, cl
mov ecx, dword [ebp - 0x58]
mov ecx, dword [ecx + eax*4]
mov eax, dword [ebp - 0x24]
add ecx, dword [eax + 0x80a8]
mov eax, dword [ebp - 0x20]
add ecx, dword [ebp - 0x64]
test eax, eax
jns 0x666739
xor eax, eax
jmp 0x666741
cmp eax, 0xff
cmovg eax, edi
mov byte [ecx], al
test ebx, ebx
jns 0x66674b
xor ebx, ebx
jmp 0x666750
cmp ebx, edi
cmovg ebx, edi
mov byte [ecx + 1], bl
test edx, edx
jns 0x66675b
xor edx, edx
jmp 0x666760
cmp edx, edi
cmovg edx, edi
mov eax, dword [ebp - 0x5c]
mov byte [ecx + 2], dl
test eax, eax
jns 0x66676e
xor eax, eax
jmp 0x666776
cmp eax, 0xff
cmovg eax, edi
mov ebx, dword [ebp - 0xc]
mov edx, dword [ebp - 0x18]
add esi, ebx
mov byte [ecx + 3], al
mov dword [ebp - 0x14], esi
cmp esi, dword [ebp - 0x2c]
jb 0x666690
mov ecx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x40]
add edx, dword [ebp - 0x34]
add eax, ebx
mov dword [ebp - 0x40], eax
mov dword [ebp - 0x18], edx
cmp eax, dword [ebp - 0x28]
jb 0x666670
jmp case.0x667201.1
cmp edi, 2
jne 0x666ad2
movzx ecx, byte [ebp - 0x41]
mov esi, 0x8000
mov eax, esi
sar eax, cl
mov dword [ebp - 0x3c], ecx
mov ecx, dword [ebp - 0x10]
shl eax, cl
cdq
idiv dword [ebp - 8]
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 0x50]
cmp eax, 7
ja case.0x667201.1
jmp dword [eax*4 + 0x667c1c]
mov edx, dword [ebp - 0x38]
mov ecx, edx
mov dword [ebp - 0x14], ecx
cmp edx, dword [ebp - 0x28]
jae case.0x667201.1
mov edi, dword [ebp - 4]
mov eax, ebx
shl edx, 4
shl eax, 4
mov dword [ebp - 0x18], edx
mov dword [ebp - 0x40], eax
mov ebx, 0xffff
jmp 0x666810
mov eax, ecx
mov ecx, dword [ebp - 0x1c]
shr eax, cl
mov ecx, dword [ebp - 0x60]
mov esi, edi
mov dword [ebp - 0x20], esi
mov eax, dword [ecx + eax*4]
mov dword [ebp - 0x5c], eax
cmp edi, dword [ebp - 0x2c]
jae 0x666903
mov edi, edi
mov edi, dword [ebp - 0x4c]
mov eax, esi
and eax, 0xf
mov ecx, dword [ebp - 0x70]
movzx edx, byte [eax + edx + 0x725ab8]
mov eax, esi
and eax, 0xfffffff0
shl eax, 4
add edx, eax
mov eax, dword [ebp - 0x6c]
mov edi, dword [edi + edx*4]
mov esi, dword [eax + edx*4]
mov eax, dword [ebp - 8]
imul esi, eax
imul edi, eax
sar edi, cl
neg esi
sar esi, cl
mov ecx, dword [ebp - 0x68]
mov edx, dword [ecx + edx*4]
add edx, dword [ebp - 0x34]
mov ecx, dword [ebp - 0x10]
imul edx, eax
sar edx, cl
mov eax, esi
sar eax, 1
lea ecx, [edi + 1]
sub edx, eax
sar ecx, 1
mov eax, edx
sub eax, ecx
mov ecx, dword [ebp - 0x1c]
add esi, eax
mov eax, dword [ebp - 0x20]
shr eax, cl
mov ecx, dword [ebp - 0x58]
add edi, esi
mov eax, dword [ecx + eax*4]
mov ecx, dword [ebp - 0x24]
add eax, dword [ebp - 0x5c]
mov ecx, dword [ecx + 0x80a8]
mov dword [ebp - 0x30], ecx
mov ecx, dword [ebp - 0x3c]
shl esi, cl
shl edx, cl
shl edi, cl
test esi, esi
jns 0x6668b7
xor esi, esi
jmp 0x6668bc
cmp esi, ebx
cmovg esi, ebx
mov ecx, dword [ebp - 0x30]
mov word [ecx + eax*2], si
test edx, edx
jns 0x6668cb
xor edx, edx
jmp 0x6668d0
cmp edx, ebx
cmovg edx, ebx
mov word [ecx + eax*2 + 2], dx
test edi, edi
jns 0x6668dd
xor edi, edi
jmp 0x6668e2
cmp edi, ebx
cmovg edi, ebx
mov esi, dword [ebp - 0x20]
mov edx, dword [ebp - 0x18]
mov word [ecx + eax*2 + 4], di
mov eax, dword [ebp - 0xc]
add esi, eax
mov dword [ebp - 0x20], esi
cmp esi, dword [ebp - 0x2c]
jb 0x666830
mov edi, dword [ebp - 4]
jmp 0x666906
mov eax, dword [ebp - 0xc]
mov ecx, dword [ebp - 0x14]
add edx, dword [ebp - 0x40]
add ecx, eax
mov dword [ebp - 0x14], ecx
mov dword [ebp - 0x18], edx
cmp ecx, dword [ebp - 0x28]
jb 0x666810
jmp case.0x667201.1
mov eax, dword [ebp - 0x24]
mov eax, dword [eax + 0x86e8]
mov dword [ebp - 0x34], eax
mov eax, esi
shl eax, cl
mov ecx, dword [ebp - 0x70]
shl esi, cl
cdq
idiv dword [ebp - 8]
mov dword [ebp - 0x18], eax
mov eax, esi
cdq
idiv dword [ebp - 8]
mov edx, dword [ebp - 0x38]
sar eax, 1
mov dword [ebp - 0x5c], eax
mov eax, edx
mov dword [ebp - 0x40], eax
cmp edx, dword [ebp - 0x28]
jae case.0x667201.1
shl edx, 4
mov ecx, ebx
shl ecx, 4
mov dword [ebp - 0x54], ecx
mov ecx, dword [ebp - 0x1c]
mov dword [ebp - 0x50], edx
jmp 0x666970
mov edi, dword [ebp - 0x60]
mov esi, dword [ebp - 4]
shr eax, cl
mov dword [ebp - 0x20], esi
mov eax, dword [edi + eax*4]
mov edi, dword [ebp - 0x18]
mov dword [ebp - 0x30], eax
mov eax, esi
cmp eax, dword [ebp - 0x2c]
jae 0x666ab6
nop
mov eax, esi
and eax, 0xf
mov ecx, dword [ebp - 0x10]
movzx edx, byte [eax + edx + 0x725ab8]
mov eax, esi
and eax, 0xfffffff0
shl eax, 4
add edx, eax
mov eax, dword [ebp - 0x68]
mov esi, edi
sub esi, dword [eax + edx*4]
mov eax, dword [ebp - 8]
mov edi, dword [ebp - 0x4c]
imul esi, eax
mov edi, dword [edi + edx*4]
sar esi, cl
imul edi, eax
mov ecx, dword [ebp - 0x6c]
neg edi
mov ebx, dword [ecx + edx*4]
imul ebx, eax
mov eax, dword [ebp - 0x34]
mov ecx, dword [ebp - 0x70]
mov edx, dword [eax + edx*4]
add edx, dword [ebp - 0x5c]
sar ebx, cl
imul edx, dword [ebp - 8]
sar edx, cl
sar edi, cl
lea eax, [esi + 1]
sar eax, 1
sub edx, eax
mov ecx, ebx
sar ecx, 1
mov eax, edx
sub eax, ecx
add esi, eax
lea ecx, [edi + 1]
sar ecx, 1
mov eax, esi
sub eax, ecx
mov ecx, dword [ebp - 0x1c]
add ebx, eax
mov eax, dword [ebp - 0x20]
shr eax, cl
mov ecx, dword [ebp - 0x58]
add edi, ebx
mov eax, dword [ecx + eax*4]
add eax, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x24]
mov dword [ebp - 0x48], eax
mov eax, dword [ecx + 0x80a8]
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x3c]
mov ecx, eax
shl ebx, cl
shl edx, cl
shl esi, cl
shl edi, cl
mov eax, 0xffff
mov dword [ebp - 0x64], edx
test ebx, ebx
jns 0x666a3f
xor ebx, ebx
jmp 0x666a48
cmp ebx, 0xffff
cmovg ebx, eax
mov ecx, dword [ebp - 0x48]
mov edx, dword [ebp - 0x14]
mov word [edx + ecx*2], bx
test esi, esi
jns 0x666a5a
xor esi, esi
jmp 0x666a63
cmp esi, 0xffff
cmovg esi, eax
mov ebx, edx
mov word [ebx + ecx*2 + 2], si
test edi, edi
jns 0x666a72
xor edi, edi
jmp 0x666a7b
cmp edi, 0xffff
cmovg edi, eax
mov edx, dword [ebp - 0x64]
mov word [ebx + ecx*2 + 4], di
test edx, edx
jns 0x666a8b
xor edx, edx
jmp 0x666a94
cmp edx, 0xffff
cmovg edx, eax
mov esi, dword [ebp - 0x20]
mov edi, dword [ebp - 0x18]
mov word [ebx + ecx*2 + 6], dx
mov ebx, dword [ebp - 0xc]
mov edx, dword [ebp - 0x50]
add esi, ebx
mov dword [ebp - 0x20], esi
cmp esi, dword [ebp - 0x2c]
jb 0x666990
mov ecx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x40]
add edx, dword [ebp - 0x54]
add eax, ebx
mov dword [ebp - 0x40], eax
mov dword [ebp - 0x50], edx
cmp eax, dword [ebp - 0x28]
jb 0x666970
jmp case.0x667201.1
cmp edi, 3
jne 0x666dfb
cmp eax, 7
ja case.0x667201.1
jmp dword [eax*4 + 0x667c3c]
mov edx, dword [ebp - 0x38]
mov ecx, edx
mov dword [ebp - 0x14], ecx
cmp edx, dword [ebp - 0x28]
jae case.0x667201.1
mov edi, dword [ebp - 4]
mov eax, ebx
shl edx, 4
shl eax, 4
mov dword [ebp - 0x18], edx
mov dword [ebp - 0x30], eax
mov ebx, 0x7fff
mov eax, ecx
mov ecx, dword [ebp - 0x1c]
shr eax, cl
mov ecx, dword [ebp - 0x60]
mov esi, edi
mov dword [ebp - 0x20], esi
mov eax, dword [ecx + eax*4]
mov dword [ebp - 0x54], eax
cmp edi, dword [ebp - 0x2c]
jae 0x666c1c
movzx eax, byte [ebp - 0x41]
mov dword [ebp - 0x34], eax
mov edi, dword [ebp - 0x4c]
mov eax, esi
and eax, 0xf
mov ecx, dword [ebp - 0x70]
movzx edx, byte [eax + edx + 0x725ab8]
mov eax, esi
and eax, 0xfffffff0
shl eax, 4
add edx, eax
mov eax, dword [ebp - 0x6c]
mov edi, dword [edi + edx*4]
mov esi, dword [eax + edx*4]
mov eax, dword [ebp - 8]
imul esi, eax
imul edi, eax
sar edi, cl
neg esi
sar esi, cl
mov ecx, dword [ebp - 0x68]
mov edx, dword [ecx + edx*4]
mov ecx, dword [ebp - 0x10]
imul edx, eax
sar edx, cl
mov eax, esi
sar eax, 1
lea ecx, [edi + 1]
sub edx, eax
sar ecx, 1
mov eax, edx
sub eax, ecx
mov ecx, dword [ebp - 0x1c]
add esi, eax
mov eax, dword [ebp - 0x20]
shr eax, cl
mov ecx, dword [ebp - 0x58]
add edi, esi
mov eax, dword [ecx + eax*4]
mov ecx, dword [ebp - 0x24]
add eax, dword [ebp - 0x54]
mov ecx, dword [ecx + 0x80a8]
mov dword [ebp - 0x5c], ecx
mov ecx, dword [ebp - 0x34]
shl esi, cl
shl edx, cl
shl edi, cl
cmp esi, 0xffff8000
jge 0x666bc2
mov esi, 0xffff8000
jmp 0x666bc7
cmp esi, ebx
cmovg esi, ebx
mov ecx, dword [ebp - 0x5c]
mov word [ecx + eax*2], si
cmp edx, 0xffff8000
jge 0x666bdd
mov edx, 0xffff8000
jmp 0x666be2
cmp edx, ebx
cmovg edx, ebx
mov word [ecx + eax*2 + 2], dx
cmp edi, 0xffff8000
jge 0x666bf6
mov edi, 0xffff8000
jmp 0x666bfb
cmp edi, ebx
cmovg edi, ebx
mov esi, dword [ebp - 0x20]
mov edx, dword [ebp - 0x18]
mov word [ecx + eax*2 + 4], di
mov eax, dword [ebp - 0xc]
add esi, eax
mov dword [ebp - 0x20], esi
cmp esi, dword [ebp - 0x2c]
jb 0x666b37
mov edi, dword [ebp - 4]
jmp 0x666c1f
mov eax, dword [ebp - 0xc]
mov ecx, dword [ebp - 0x14]
add edx, dword [ebp - 0x30]
add ecx, eax
mov dword [ebp - 0x14], ecx
mov dword [ebp - 0x18], edx
cmp ecx, dword [ebp - 0x28]
jb 0x666b12
jmp case.0x667201.1
mov esi, dword [ebp - 4]
push esi
push dword [ebp - 0x38]
push dword [ebp - 0x10]
jmp 0x66644a
mov eax, dword [edx + 0x86e8]
mov edx, dword [ebp - 0x38]
mov dword [ebp - 0x54], eax
mov eax, edx
mov dword [ebp - 0x3c], eax
cmp edx, dword [ebp - 0x28]
jae case.0x667201.1
mov edi, dword [ebp - 4]
shl edx, 4
mov ecx, ebx
shl ecx, 4
mov dword [ebp - 0x50], ecx
mov ecx, dword [ebp - 0x1c]
mov dword [ebp - 0x18], edx
mov edx, dword [ebp - 0x60]
shr eax, cl
mov esi, edi
mov dword [ebp - 0x20], esi
mov eax, dword [edx + eax*4]
mov edx, dword [ebp - 0x18]
mov dword [ebp - 0x34], eax
cmp edi, dword [ebp - 0x2c]
jae 0x666ddf
movzx eax, byte [ebp - 0x41]
mov dword [ebp - 0x5c], eax
jmp 0x666ca0
mov eax, esi
and eax, 0xf
mov ecx, dword [ebp - 0x10]
movzx edx, byte [eax + edx + 0x725ab8]
mov eax, esi
and eax, 0xfffffff0
shl eax, 4
add edx, eax
mov eax, dword [ebp - 0x68]
mov edi, dword [ebp - 0x4c]
mov esi, dword [eax + edx*4]
mov eax, dword [ebp - 8]
mov edi, dword [edi + edx*4]
imul esi, eax
imul edi, eax
neg esi
sar esi, cl
mov ecx, dword [ebp - 0x6c]
neg edi
mov ebx, dword [ecx + edx*4]
mov ecx, dword [ebp - 0x70]
imul ebx, eax
mov eax, dword [ebp - 0x54]
sar ebx, cl
mov edx, dword [eax + edx*4]
imul edx, dword [ebp - 8]
sar edx, cl
sar edi, cl
lea eax, [esi + 1]
sar eax, 1
sub edx, eax
mov ecx, ebx
sar ecx, 1
mov eax, edx
sub eax, ecx
add esi, eax
lea ecx, [edi + 1]
sar ecx, 1
mov eax, esi
sub eax, ecx
mov ecx, dword [ebp - 0x1c]
add ebx, eax
mov eax, dword [ebp - 0x20]
shr eax, cl
mov ecx, dword [ebp - 0x58]
add edi, ebx
mov eax, dword [ecx + eax*4]
add eax, dword [ebp - 0x34]
mov ecx, dword [ebp - 0x24]
mov dword [ebp - 0x30], eax
mov eax, dword [ecx + 0x80a8]
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x5c]
mov ecx, eax
shl ebx, cl
shl edx, cl
shl esi, cl
shl edi, cl
mov eax, 0x7fff
mov dword [ebp - 0x40], edx
cmp ebx, 0xffff8000
jge 0x666d53
mov ebx, 0xffff8000
jmp 0x666d5c
cmp ebx, 0x7fff
cmovg ebx, eax
mov ecx, dword [ebp - 0x30]
mov edx, dword [ebp - 0x14]
mov word [edx + ecx*2], bx
cmp esi, 0xffff8000
jge 0x666d75
mov esi, 0xffff8000
jmp 0x666d7e
cmp esi, 0x7fff
cmovg esi, eax
mov ebx, edx
mov word [ebx + ecx*2 + 2], si
cmp edi, 0xffff8000
jge 0x666d94
mov edi, 0xffff8000
jmp 0x666d9d
cmp edi, 0x7fff
cmovg edi, eax
mov edx, dword [ebp - 0x40]
mov word [ebx + ecx*2 + 4], di
cmp edx, 0xffff8000
jge 0x666db4
mov edx, 0xffff8000
jmp 0x666dbd
cmp edx, 0x7fff
cmovg edx, eax
mov esi, dword [ebp - 0x20]
mov word [ebx + ecx*2 + 6], dx
mov ebx, dword [ebp - 0xc]
mov edx, dword [ebp - 0x18]
add esi, ebx
mov dword [ebp - 0x20], esi
cmp esi, dword [ebp - 0x2c]
jb 0x666ca0
mov ecx, dword [ebp - 0x1c]
mov edi, dword [ebp - 4]
mov eax, dword [ebp - 0x3c]
add edx, dword [ebp - 0x50]
add eax, ebx
mov dword [ebp - 0x3c], eax
mov dword [ebp - 0x18], edx
cmp eax, dword [ebp - 0x28]
jb 0x666c78
jmp case.0x667201.1
mov ecx, dword [ebp - 0x10]
cmp edi, 4
jne case.0x6667dd.1
cmp eax, 7
ja case.0x667201.1
movzx eax, byte [eax + 0x667c68]
jmp dword [eax*4 + 0x667c5c]
mov edx, dword [ebp - 0x38]
mov eax, edx
mov dword [ebp - 0x3c], eax
cmp edx, dword [ebp - 0x28]
jae case.0x667201.1
mov edi, dword [ebp - 4]
shl edx, 4
mov ecx, ebx
shl ecx, 4
mov dword [ebp - 0x34], ecx
mov ecx, dword [ebp - 0x1c]
mov dword [ebp - 0x18], edx
mov edx, dword [ebp - 0x60]
shr eax, cl
mov esi, edi
mov dword [ebp - 0x20], esi
mov eax, dword [edx + eax*4]
mov edx, dword [ebp - 0x18]
mov dword [ebp - 0x54], eax
cmp edi, dword [ebp - 0x2c]
jae 0x666f30
nop
mov ebx, dword [ebp - 0x4c]
mov eax, esi
and eax, 0xf
mov ecx, dword [ebp - 0x70]
movzx edx, byte [eax + edx + 0x725ab8]
mov eax, esi
and eax, 0xfffffff0
shl eax, 4
add edx, eax
mov eax, dword [ebp - 0x6c]
mov ebx, dword [ebx + edx*4]
mov esi, dword [eax + edx*4]
mov eax, dword [ebp - 8]
imul esi, eax
imul ebx, eax
sar ebx, cl
neg esi
sar esi, cl
mov ecx, dword [ebp - 0x68]
mov edi, dword [ecx + edx*4]
mov ecx, dword [ebp - 0x10]
imul edi, eax
sar edi, cl
mov eax, esi
sar eax, 1
lea ecx, [ebx + 1]
sub edi, eax
sar ecx, 1
mov eax, edi
sub eax, ecx
mov ecx, dword [ebp - 0x1c]
add esi, eax
mov eax, dword [ebp - 0x20]
shr eax, cl
mov ecx, dword [ebp - 0x58]
mov dword [ebp - 0x14], esi
mov esi, dword [ecx + eax*4]
mov eax, dword [ebp - 0x24]
add esi, dword [ebp - 0x54]
mov edx, dword [eax + 0x80a8]
mov eax, dword [ebp - 0x14]
mov ecx, eax
sar ecx, 0x1f
and eax, 0x7fff
xor eax, ecx
sub eax, ecx
mov ecx, dword [ebp - 0x14]
mov word [edx + esi*2], ax
mov eax, edi
sar eax, 0x1f
and edi, 0x7fff
add ecx, ebx
mov ebx, dword [ebp - 0xc]
xor edi, eax
sub edi, eax
mov eax, ecx
sar eax, 0x1f
and ecx, 0x7fff
xor ecx, eax
sub ecx, eax
mov word [edx + esi*2 + 2], di
mov word [edx + esi*2 + 4], cx
mov esi, dword [ebp - 0x20]
mov edx, dword [ebp - 0x18]
add esi, ebx
mov dword [ebp - 0x20], esi
cmp esi, dword [ebp - 0x2c]
jb 0x666e60
mov ecx, dword [ebp - 0x1c]
mov edi, dword [ebp - 4]
mov eax, dword [ebp - 0x3c]
add edx, dword [ebp - 0x34]
add eax, ebx
mov dword [ebp - 0x3c], eax
mov dword [ebp - 0x18], edx
cmp eax, dword [ebp - 0x28]
jb 0x666e43
jmp case.0x667201.1
cmp edi, 5
jne 0x6670b6
movzx ecx, byte [ebp - 0x41]
mov edi, dword [ebp - 8]
mov eax, 0x80000000
sar eax, cl
mov dword [ebp - 0x5c], ecx
mov ecx, dword [ebp - 0x10]
shl eax, cl
cdq
idiv edi
mov edx, dword [ebp - 0x50]
mov dword [ebp - 0x54], eax
cmp edx, 7
ja case.default.0x666f84
movzx ecx, byte [edx + 0x667c7c]
jmp dword [ecx*4 + 0x667c70]
mov edx, dword [ebp - 0x38]
mov eax, edx
mov dword [ebp - 0x3c], eax
cmp edx, dword [ebp - 0x28]
jae case.0x666f84.1
shl edx, 4
mov ecx, ebx
shl ecx, 4
mov dword [ebp - 0x30], ecx
mov ecx, dword [ebp - 0x1c]
mov dword [ebp - 0x18], edx
lea ecx, [ecx]
mov edi, dword [ebp - 0x60]
mov esi, dword [ebp - 4]
shr eax, cl
mov dword [ebp - 0x20], esi
mov eax, dword [edi + eax*4]
mov edi, dword [ebp - 8]
mov dword [ebp - 0x34], eax
mov eax, esi
cmp eax, dword [ebp - 0x2c]
jae 0x66707e
nop
mov eax, esi
and eax, 0xf
mov ecx, dword [ebp - 0x70]
movzx edx, byte [eax + edx + 0x725ab8]
mov eax, esi
and eax, 0xfffffff0
shl eax, 4
add edx, eax
mov eax, dword [ebp - 0x6c]
mov esi, dword [eax + edx*4]
mov eax, dword [ebp - 0x68]
imul esi, edi
neg esi
sar esi, cl
mov ecx, dword [ebp - 0x4c]
mov ebx, dword [ecx + edx*4]
mov ecx, dword [ebp - 0x70]
imul ebx, edi
mov edi, dword [eax + edx*4]
add edi, dword [ebp - 0x54]
sar ebx, cl
imul edi, dword [ebp - 8]
mov ecx, dword [ebp - 0x10]
sar edi, cl
mov eax, esi
sar eax, 1
lea ecx, [ebx + 1]
sub edi, eax
sar ecx, 1
mov eax, edi
sub eax, ecx
mov ecx, dword [ebp - 0x1c]
add esi, eax
mov eax, dword [ebp - 0x20]
shr eax, cl
mov ecx, dword [ebp - 0x58]
mov dword [ebp - 0x14], esi
mov esi, dword [ecx + eax*4]
mov eax, dword [ebp - 0x24]
add esi, dword [ebp - 0x34]
mov edx, dword [eax + 0x80a8]
mov ecx, dword [ebp - 0x5c]
mov eax, dword [ebp - 0x14]
shl eax, cl
shl edi, cl
mov dword [edx + esi*4], eax
mov eax, dword [ebp - 0x14]
add eax, ebx
mov ebx, dword [ebp - 0xc]
shl eax, cl
mov dword [edx + esi*4 + 4], edi
mov edi, dword [ebp - 8]
mov dword [edx + esi*4 + 8], eax
mov esi, dword [ebp - 0x20]
mov edx, dword [ebp - 0x18]
add esi, ebx
mov dword [ebp - 0x20], esi
cmp esi, dword [ebp - 0x2c]
jb 0x666fd0
mov ecx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x3c]
add edx, dword [ebp - 0x30]
add eax, ebx
mov dword [ebp - 0x3c], eax
mov dword [ebp - 0x18], edx
cmp eax, dword [ebp - 0x28]
jb 0x666fb0
jmp case.0x666f84.1
mov esi, dword [ebp - 4]
mov ecx, dword [ebp - 0x24]
push esi
push dword [ebp - 0x38]
mov edx, edi
push dword [ebp - 0x10]
call fcn.006683a0
add esp, 0xc
jmp 0x6663de
cmp edi, 6
jne 0x6671e9
cmp eax, 7
ja case.0x667201.1
movzx eax, byte [eax + 0x667c90]
jmp dword [eax*4 + 0x667c84]
mov edx, dword [ebp - 0x38]
mov eax, edx
mov dword [ebp - 0x3c], eax
cmp edx, dword [ebp - 0x28]
jae case.0x667201.1
mov edi, dword [ebp - 4]
shl edx, 4
mov ecx, ebx
shl ecx, 4
mov dword [ebp - 0x5c], ecx
mov ecx, dword [ebp - 0x1c]
mov dword [ebp - 0x18], edx
jmp 0x667100
mov edx, dword [ebp - 0x60]
shr eax, cl
mov esi, edi
mov dword [ebp - 0x20], esi
mov eax, dword [edx + eax*4]
mov edx, dword [ebp - 0x18]
mov dword [ebp - 0x54], eax
cmp edi, dword [ebp - 0x2c]
jae 0x6671cd
movzx eax, byte [ebp - 0x41]
mov dword [ebp - 0x34], eax
mov ebx, dword [ebp - 0x4c]
mov eax, esi
and eax, 0xf
mov ecx, dword [ebp - 0x70]
movzx edx, byte [eax + edx + 0x725ab8]
mov eax, esi
and eax, 0xfffffff0
shl eax, 4
add edx, eax
mov eax, dword [ebp - 0x6c]
mov ebx, dword [ebx + edx*4]
mov esi, dword [eax + edx*4]
mov eax, dword [ebp - 8]
imul esi, eax
imul ebx, eax
sar ebx, cl
neg esi
sar esi, cl
mov ecx, dword [ebp - 0x68]
mov edi, dword [ecx + edx*4]
mov ecx, dword [ebp - 0x10]
imul edi, eax
sar edi, cl
mov eax, esi
sar eax, 1
lea ecx, [ebx + 1]
sub edi, eax
sar ecx, 1
mov eax, edi
sub eax, ecx
mov ecx, dword [ebp - 0x1c]
add esi, eax
mov eax, dword [ebp - 0x20]
shr eax, cl
mov ecx, dword [ebp - 0x58]
mov dword [ebp - 0x14], esi
mov esi, dword [ecx + eax*4]
mov eax, dword [ebp - 0x24]
add esi, dword [ebp - 0x54]
mov edx, dword [eax + 0x80a8]
mov ecx, dword [ebp - 0x34]
mov eax, dword [ebp - 0x14]
shl eax, cl
shl edi, cl
mov dword [edx + esi*4], eax
mov eax, dword [ebp - 0x14]
add eax, ebx
mov ebx, dword [ebp - 0xc]
shl eax, cl
mov dword [edx + esi*4 + 4], edi
mov dword [edx + esi*4 + 8], eax
mov esi, dword [ebp - 0x20]
mov edx, dword [ebp - 0x18]
add esi, ebx
mov dword [ebp - 0x20], esi
cmp esi, dword [ebp - 0x2c]
jb 0x667123
mov ecx, dword [ebp - 0x1c]
mov edi, dword [ebp - 4]
mov eax, dword [ebp - 0x3c]
add edx, dword [ebp - 0x5c]
add eax, ebx
mov dword [ebp - 0x3c], eax
mov dword [ebp - 0x18], edx
cmp eax, dword [ebp - 0x28]
jb 0x667100
jmp case.0x667201.1
cmp edi, 7
jne 0x6674bb
cmp eax, edi
ja case.0x667201.1
movzx eax, byte [eax + 0x667ca4]
jmp dword [eax*4 + 0x667c98]
mov edx, dword [ebp - 0x38]
mov eax, edx
mov dword [ebp - 0x30], eax
cmp edx, dword [ebp - 0x28]
jae case.0x667201.1
mov edi, dword [ebp - 4]
shl edx, 4
mov ecx, ebx
shl ecx, 4
mov dword [ebp - 0x78], ecx
mov ecx, dword [ebp - 0x1c]
mov dword [ebp - 0x14], edx
lea ecx, [ecx]
mov ebx, dword [ebp - 0x60]
shr eax, cl
mov esi, edi
mov dword [ebp - 0x3c], esi
mov eax, dword [ebx + eax*4]
mov ebx, dword [ebp - 0xc]
mov dword [ebp - 0x54], eax
cmp edi, dword [ebp - 0x2c]
jae 0x66746c
movsx eax, byte [ebp - 0x71]
movzx ecx, byte [ebp - 0x41]
mov dword [ebp - 0x50], eax
mov edi, 1
mov eax, 0x17
shl edi, cl
sub eax, ecx
mov dword [ebp - 0x20], ecx
mov dword [ebp - 0x48], eax
jmp 0x667270
mov eax, esi
and eax, 0xf
mov ecx, dword [ebp - 0x70]
movzx edx, byte [eax + edx + 0x725ab8]
mov eax, esi
and eax, 0xfffffff0
shl eax, 4
add edx, eax
mov eax, dword [ebp - 0x6c]
mov esi, dword [eax + edx*4]
mov eax, dword [ebp - 0x4c]
imul esi, dword [ebp - 8]
mov eax, dword [eax + edx*4]
imul eax, dword [ebp - 8]
sar eax, cl
neg esi
sar esi, cl
mov ecx, dword [ebp - 0x10]
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x68]
mov edx, dword [eax + edx*4]
imul edx, dword [ebp - 8]
sar edx, cl
mov ecx, dword [ebp - 0x18]
inc ecx
mov eax, esi
sar eax, 1
sub edx, eax
mov eax, dword [ebp - 0x3c]
sar ecx, 1
mov dword [ebp - 0x5c], edx
sub edx, ecx
mov ecx, dword [ebp - 0x1c]
shr eax, cl
mov ecx, dword [ebp - 0x58]
add esi, edx
add dword [ebp - 0x18], esi
lea edx, [edi - 1]
mov eax, dword [ecx + eax*4]
add eax, dword [ebp - 0x54]
mov ecx, dword [ebp - 0x24]
mov dword [ebp - 0x64], eax
mov eax, dword [ecx + 0x80a8]
mov ecx, esi
sar ecx, 0x1f
mov dword [ebp - 0x40], eax
mov eax, ecx
xor eax, esi
sub eax, ecx
mov dword [ebp - 0x34], ecx
mov ecx, dword [ebp - 0x20]
mov esi, eax
shr esi, cl
and edx, eax
or edx, edi
test esi, esi
jne 0x667313
xor edx, edi
mov esi, 1
mov eax, 0x7f
sub eax, dword [ebp - 0x50]
add esi, eax
cmp edx, edi
jge 0x667339
cmp esi, 1
jle 0x66748e
test edx, edx
jle 0x66748e
add edx, edx
dec esi
cmp edx, edi
jl 0x667321
xor edx, edi
mov ecx, dword [ebp - 0x48]
mov eax, dword [ebp - 0x34]
shl edx, cl
mov ecx, dword [ebp - 0x40]
shl esi, 0x17
and eax, 0x80000000
or edx, esi
or edx, eax
mov eax, dword [ebp - 0x64]
mov dword [ecx + eax*4], edx
mov ecx, dword [ebp - 0x5c]
sar ecx, 0x1f
mov eax, ecx
xor eax, dword [ebp - 0x5c]
mov dword [ebp - 0x34], ecx
sub eax, ecx
mov ecx, dword [ebp - 0x20]
mov esi, eax
shr esi, cl
lea edx, [edi - 1]
and edx, eax
or edx, edi
test esi, esi
jne 0x667381
xor edx, edi
mov esi, 1
mov eax, 0x7f
sub eax, dword [ebp - 0x50]
add esi, eax
cmp edx, edi
jge 0x6673a8
nop
cmp esi, 1
jle 0x66749d
test edx, edx
jle 0x66749d
add edx, edx
dec esi
cmp edx, edi
jl 0x667390
xor edx, edi
mov ecx, dword [ebp - 0x48]
mov eax, dword [ebp - 0x34]
shl edx, cl
mov ecx, dword [ebp - 0x40]
shl esi, 0x17
and eax, 0x80000000
or edx, esi
or edx, eax
mov eax, dword [ebp - 0x64]
mov dword [ebp - 0x34], edx
movss xmm0, dword [ebp - 0x34]
movss dword [ecx + eax*4 + 4], xmm0
mov ecx, dword [ebp - 0x18]
sar ecx, 0x1f
mov eax, ecx
xor eax, dword [ebp - 0x18]
mov dword [ebp - 0x34], ecx
sub eax, ecx
mov ecx, dword [ebp - 0x20]
mov esi, eax
shr esi, cl
lea edx, [edi - 1]
and edx, eax
or edx, edi
test esi, esi
jne 0x6673fb
xor edx, edi
mov esi, 1
mov eax, 0x7f
sub eax, dword [ebp - 0x50]
add esi, eax
cmp edx, edi
jge 0x667428
lea esp, [esp]
cmp esi, 1
jle 0x6674ac
test edx, edx
jle 0x6674ac
add edx, edx
dec esi
cmp edx, edi
jl 0x667410
xor edx, edi
mov ecx, dword [ebp - 0x48]
mov eax, dword [ebp - 0x34]
shl edx, cl
mov ecx, dword [ebp - 0x40]
shl esi, 0x17
and eax, 0x80000000
or edx, esi
mov esi, dword [ebp - 0x3c]
or edx, eax
mov eax, dword [ebp - 0x64]
mov dword [ebp - 0x34], edx
movss xmm0, dword [ebp - 0x34]
mov edx, dword [ebp - 0x14]
add esi, ebx
movss dword [ecx + eax*4 + 8], xmm0
mov dword [ebp - 0x3c], esi
cmp esi, dword [ebp - 0x2c]
jb 0x667270
mov ecx, dword [ebp - 0x1c]
mov edi, dword [ebp - 4]
mov eax, dword [ebp - 0x30]
add edx, dword [ebp - 0x78]
add eax, ebx
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x14], edx
cmp eax, dword [ebp - 0x28]
jb 0x667230
mov edi, dword [ebp - 8]
mov esi, dword [ebp - 4]
jmp 0x6663e1
cmp edx, edi
jge 0x667339
xor esi, esi
jmp 0x66733b
cmp edx, edi
jge 0x6673a8
xor esi, esi
jmp 0x6673aa
cmp edx, edi
jge 0x667428
xor esi, esi
jmp 0x66742a
test edi, edi
jne 0x667681
mov eax, dword [ebp - 0x24]
mov edx, dword [ebp - 0x38]
mov esi, dword [eax + 0x18]
cmp dword [eax + 0x40], 4
mov eax, edx
mov dword [ebp - 0x3c], esi
mov dword [ebp - 0x40], eax
jge 0x6675a1
cmp edx, dword [ebp - 0x28]
jae case.0x667201.1
shl edx, 4
mov ecx, ebx
shl ecx, 4
mov dword [ebp - 0x78], ecx
mov ecx, dword [ebp - 0x1c]
mov dword [ebp - 0x14], edx
mov esi, dword [ebp - 0x60]
mov edi, dword [ebp - 4]
shr eax, cl
mov eax, dword [esi + eax*4]
add eax, dword [ebp - 0x3c]
mov dword [ebp - 0x30], eax
mov eax, edi
cmp eax, dword [ebp - 0x2c]
jae 0x667585
mov ebx, dword [ebp - 0x58]
mov edx, edi
shr edx, cl
mov cl, 7
mov al, byte [ebx + edx*4]
mov esi, dword [ebx + edx*4]
mov edx, dword [ebp - 0x14]
and al, 7
sub cl, al
mov eax, dword [ebp - 0x24]
shr esi, 3
add esi, dword [eax + 0x80a8]
mov eax, dword [ebp - 0x30]
mov bl, byte [esi + eax]
mov eax, edi
and eax, 0xf
movzx edx, byte [eax + edx + 0x725ab8]
mov eax, edi
and eax, 0xfffffff0
shl eax, 4
add edx, eax
mov eax, dword [ebp - 0x68]
cmp dword [eax + edx*4], 0
mov eax, dword [ebp - 0x24]
setg dl
xor dl, byte [eax + 0x8090]
mov al, bl
shr al, cl
add dl, al
mov eax, dword [ebp - 0x30]
and dl, 1
shl dl, cl
mov ecx, dword [ebp - 0x1c]
xor dl, bl
mov ebx, dword [ebp - 0xc]
add edi, ebx
mov byte [esi + eax], dl
cmp edi, dword [ebp - 0x2c]
jb 0x667510
mov edx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x40]
add edx, dword [ebp - 0x78]
add eax, ebx
mov dword [ebp - 0x40], eax
mov dword [ebp - 0x14], edx
cmp eax, dword [ebp - 0x28]
jb 0x6674f8
jmp case.0x667201.1
cmp edx, dword [ebp - 0x28]
jae case.0x667201.1
mov edi, dword [ebp - 0x1c]
mov esi, edx
shl esi, 4
mov ecx, ebx
shl ecx, 4
mov dword [ebp - 0x14], esi
mov dword [ebp - 0x34], ecx
lea ecx, [ecx]
mov edx, dword [ebp - 4]
mov ecx, edi
shr eax, cl
mov ecx, dword [ebp - 0x60]
mov dword [ebp - 0x30], edx
mov ecx, dword [ecx + eax*4]
add ecx, dword [ebp - 0x3c]
mov eax, edx
cmp eax, dword [ebp - 0x2c]
jae 0x667665
mov al, cl
and al, 7
mov bl, 7
sub bl, al
movzx eax, bl
shr ecx, 3
mov byte [ebp - 0x71], bl
mov dword [ebp - 0x54], eax
mov dword [ebp - 0x78], ecx
mov eax, edx
mov ecx, edi
shr eax, cl
mov ecx, dword [ebp - 0x58]
mov ebx, dword [ebp - 0xc]
mov edi, dword [ecx + eax*4]
mov eax, dword [ebp - 0x24]
mov ecx, dword [ebp - 0x14]
mov esi, dword [eax + 0x80a8]
add edi, dword [ebp - 0x78]
mov eax, edx
and eax, 0xf
movzx ecx, byte [eax + ecx + 0x725ab8]
mov eax, edx
and eax, 0xfffffff0
shl eax, 4
add ecx, eax
mov eax, dword [ebp - 0x68]
cmp dword [eax + ecx*4], 0
mov eax, dword [ebp - 0x24]
mov cl, byte [ebp - 0x71]
setg dl
xor dl, byte [eax + 0x8090]
mov al, byte [edi + esi]
shr al, cl
mov ecx, dword [ebp - 0x54]
add dl, al
and dl, 1
shl dl, cl
xor byte [edi + esi], dl
mov edx, dword [ebp - 0x30]
mov edi, dword [ebp - 0x1c]
add edx, ebx
mov dword [ebp - 0x30], edx
cmp edx, dword [ebp - 0x2c]
jb 0x6675f5
mov esi, dword [ebp - 0x14]
mov eax, dword [ebp - 0x40]
add esi, dword [ebp - 0x34]
add eax, ebx
mov dword [ebp - 0x40], eax
mov dword [ebp - 0x14], esi
cmp eax, dword [ebp - 0x28]
jb 0x6675c0
jmp case.0x667201.1
cmp edi, 8
jne 0x6677c9
mov edi, dword [ebp - 8]
mov eax, 0x10
shl eax, cl
mov esi, dword [ebp - 4]
cdq
idiv edi
mov edx, dword [ebp - 0x38]
mov ecx, edx
mov dword [ebp - 0x30], ecx
mov dword [ebp - 0x78], eax
cmp edx, dword [ebp - 0x28]
jae 0x6663de
shl edx, 4
mov eax, ebx
shl eax, 4
mov dword [ebp - 0x14], edx
mov dword [ebp - 0x5c], eax
lea esp, [esp]
mov eax, ecx
mov ecx, dword [ebp - 0x1c]
shr eax, cl
mov ecx, dword [ebp - 0x60]
mov ebx, esi
mov eax, dword [ecx + eax*4]
mov dword [ebp - 0x54], eax
cmp esi, dword [ebp - 0x2c]
jae 0x6677a7
jmp 0x6676e0
mov esi, dword [ebp - 0x4c]
mov ecx, dword [ebp - 0x70]
mov eax, ebx
and eax, 0xf
movzx edx, byte [eax + edx + 0x725ab8]
mov eax, ebx
and eax, 0xfffffff0
shl eax, 4
add edx, eax
mov eax, dword [ebp - 0x6c]
mov esi, dword [esi + edx*4]
mov edi, dword [eax + edx*4]
mov eax, dword [ebp - 8]
imul edi, eax
imul esi, eax
sar esi, cl
neg edi
sar edi, cl
mov ecx, dword [ebp - 0x68]
mov edx, dword [ecx + edx*4]
add edx, dword [ebp - 0x78]
mov ecx, dword [ebp - 0x10]
imul edx, eax
sar edx, cl
mov eax, edi
sar eax, 1
lea ecx, [esi + 1]
sub edx, eax
sar ecx, 1
mov eax, edx
sub eax, ecx
mov ecx, dword [ebp - 0x1c]
add edi, eax
mov eax, ebx
shr eax, cl
mov ecx, dword [ebp - 0x58]
add esi, edi
mov ecx, dword [ecx + eax*4]
mov eax, dword [ebp - 0x24]
add ecx, dword [ebp - 0x54]
mov eax, dword [eax + 0x80a8]
mov dword [ebp - 0x34], eax
mov eax, 0x1f
test edi, edi
jns 0x667762
xor edi, edi
jmp 0x667768
cmp edi, 0x1f
cmovg edi, eax
test edx, edx
jns 0x667770
xor edx, edx
jmp 0x667776
cmp edx, 0x1f
cmovg edx, eax
test esi, esi
jns 0x66777e
xor esi, esi
jmp 0x667784
cmp esi, 0x1f
cmovg esi, eax
add ebx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x34]
shl esi, 5
add esi, edx
mov edx, dword [ebp - 0x14]
shl esi, 5
add esi, edi
mov word [eax + ecx*2], si
cmp ebx, dword [ebp - 0x2c]
jb 0x6676e0
mov esi, dword [ebp - 4]
mov ecx, dword [ebp - 0x30]
mov ebx, dword [ebp - 0xc]
add edx, dword [ebp - 0x5c]
add ecx, ebx
mov dword [ebp - 0x30], ecx
mov dword [ebp - 0x14], edx
cmp ecx, dword [ebp - 0x28]
jb 0x6676c0
mov edi, dword [ebp - 8]
jmp 0x6663e1
cmp edi, 0xa
jne 0x66792a
mov edi, dword [ebp - 8]
mov eax, 0x20
shl eax, cl
cdq
idiv edi
mov edx, dword [ebp - 0x38]
mov ecx, edx
mov dword [ebp - 0x3c], ecx
mov dword [ebp - 0x78], eax
cmp edx, dword [ebp - 0x28]
jae case.0x666f84.1
shl edx, 4
mov eax, ebx
shl eax, 4
mov dword [ebp - 0x40], eax
mov eax, dword [ebp - 4]
mov dword [ebp - 0x14], edx
mov dword [ebp - 0x34], 0x3f
jmp 0x667810
mov esi, eax
mov eax, ecx
mov ecx, dword [ebp - 0x1c]
shr eax, cl
mov ecx, dword [ebp - 0x60]
mov dword [ebp - 0x30], esi
mov eax, dword [ecx + eax*4]
mov dword [ebp - 0x54], eax
mov eax, dword [ebp - 4]
cmp eax, dword [ebp - 0x2c]
jae 0x66790e
mov ebx, dword [ebp - 0x4c]
mov eax, esi
and eax, 0xf
mov ecx, dword [ebp - 0x70]
movzx edx, byte [eax + edx + 0x725ab8]
mov eax, esi
and eax, 0xfffffff0
shl eax, 4
add edx, eax
mov eax, dword [ebp - 0x6c]
mov esi, dword [ebx + edx*4]
mov eax, dword [eax + edx*4]
imul esi, edi
imul eax, edi
sar esi, cl
neg eax
sar eax, cl
mov ecx, dword [ebp - 0x68]
mov edi, dword [ecx + edx*4]
add edi, dword [ebp - 0x78]
mov ecx, dword [ebp - 0x10]
imul edi, dword [ebp - 8]
sar edi, cl
mov ecx, eax
sar ecx, 1
lea edx, [esi + 1]
sub edi, ecx
sar edx, 1
mov ecx, edi
sub ecx, edx
add eax, ecx
mov ecx, dword [ebp - 0x1c]
add esi, eax
cdq
sub eax, edx
mov ebx, eax
mov eax, esi
mov esi, dword [ebp - 0x30]
cdq
sub eax, edx
mov edx, esi
shr edx, cl
mov ecx, dword [ebp - 0x58]
sar eax, 1
mov ecx, dword [ecx + edx*4]
mov edx, dword [ebp - 0x24]
add ecx, dword [ebp - 0x54]
sar ebx, 1
mov edx, dword [edx + 0x80a8]
mov dword [ebp - 0x5c], edx
mov edx, 0x1f
jns 0x6678c0
xor ebx, ebx
jmp 0x6678c6
cmp ebx, 0x1f
cmovg ebx, edx
test edi, edi
jns 0x6678ce
xor edi, edi
jmp 0x6678d5
cmp edi, 0x3f
cmovg edi, dword [ebp - 0x34]
test eax, eax
jns 0x6678dd
xor eax, eax
jmp 0x6678e3
cmp eax, 0x1f
cmovg eax, edx
mov edx, dword [ebp - 0x5c]
shl eax, 6
add eax, edi
mov edi, dword [ebp - 8]
shl eax, 5
add eax, ebx
mov ebx, dword [ebp - 0xc]
add esi, ebx
mov word [edx + ecx*2], ax
mov edx, dword [ebp - 0x14]
mov dword [ebp - 0x30], esi
cmp esi, dword [ebp - 0x2c]
jb 0x667831
mov eax, dword [ebp - 4]
mov ecx, dword [ebp - 0x3c]
add edx, dword [ebp - 0x40]
add ecx, ebx
mov dword [ebp - 0x3c], ecx
mov dword [ebp - 0x14], edx
cmp ecx, dword [ebp - 0x28]
jb 0x667810
jmp case.0x666f84.1
cmp edi, 9
mov edi, dword [ebp - 8]
jne case.0x666f84.1
mov eax, 0x200
shl eax, cl
cdq
idiv edi
mov edx, dword [ebp - 0x38]
mov dword [ebp - 0x78], eax
mov eax, edx
mov dword [ebp - 0x30], eax
cmp edx, dword [ebp - 0x28]
jae case.0x666f84.1
mov esi, dword [ebp - 4]
mov edi, dword [ebp - 0x28]
shl edx, 4
mov ecx, ebx
shl ecx, 4
mov dword [ebp - 0x34], ecx
mov ecx, dword [ebp - 0x1c]
mov dword [ebp - 0x18], edx
mov dword [ebp - 0x14], 0x3ff
mov edx, dword [ebp - 0x60]
shr eax, cl
mov ebx, esi
mov eax, dword [edx + eax*4]
mov edx, dword [ebp - 0x18]
mov dword [ebp - 0x54], eax
cmp esi, dword [ebp - 0x2c]
jae 0x667a5d
jmp 0x667990
mov esi, dword [ebp - 0x4c]
mov ecx, dword [ebp - 0x70]
mov eax, ebx
and eax, 0xf
movzx edx, byte [eax + edx + 0x725ab8]
mov eax, ebx
and eax, 0xfffffff0
shl eax, 4
add edx, eax
mov eax, dword [ebp - 0x6c]
mov esi, dword [esi + edx*4]
mov edi, dword [eax + edx*4]
mov eax, dword [ebp - 8]
imul edi, eax
imul esi, eax
sar esi, cl
neg edi
sar edi, cl
mov ecx, dword [ebp - 0x68]
mov edx, dword [ecx + edx*4]
add edx, dword [ebp - 0x78]
mov ecx, dword [ebp - 0x10]
imul edx, eax
sar edx, cl
mov eax, edi
sar eax, 1
lea ecx, [esi + 1]
sub edx, eax
sar ecx, 1
mov eax, edx
sub eax, ecx
mov ecx, dword [ebp - 0x1c]
add edi, eax
mov eax, ebx
shr eax, cl
mov ecx, dword [ebp - 0x58]
add esi, edi
mov eax, dword [ecx + eax*4]
mov ecx, dword [ebp - 0x24]
add eax, dword [ebp - 0x54]
mov ecx, dword [ecx + 0x80a8]
test edi, edi
jns 0x667a0a
xor edi, edi
jmp 0x667a14
cmp edi, 0x3ff
cmovg edi, dword [ebp - 0x14]
test edx, edx
jns 0x667a1c
xor edx, edx
jmp 0x667a26
cmp edx, 0x3ff
cmovg edx, dword [ebp - 0x14]
test esi, esi
jns 0x667a2e
xor esi, esi
jmp 0x667a38
cmp esi, 0x3ff
cmovg esi, dword [ebp - 0x14]
add ebx, dword [ebp - 0xc]
shl esi, 0xa
add esi, edx
mov edx, dword [ebp - 0x18]
shl esi, 0xa
add esi, edi
mov dword [ecx + eax*4], esi
cmp ebx, dword [ebp - 0x2c]
jb 0x667990
mov ecx, dword [ebp - 0x1c]
mov esi, dword [ebp - 4]
mov edi, dword [ebp - 0x28]
mov eax, dword [ebp - 0x30]
mov ebx, dword [ebp - 0xc]
add edx, dword [ebp - 0x34]
add eax, ebx
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x18], edx
cmp eax, edi
jb 0x667972
mov edi, dword [ebp - 8]
jmp 0x6663e1
mov ebx, dword [ebp - 0xc]
mov esi, dword [ebp - 4]
jmp 0x6663e4
mov eax, dword [ebp - 0x38]
cmp eax, dword [ebp - 0x28]
jae case.default.0x66643b
mov edi, dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x1c]
jmp 0x667aa0
shr eax, cl
mov edx, esi
mov esi, dword [ebp - 0x60]
mov esi, dword [esi + eax*4]
cmp dword [ebp - 4], edi
jae 0x667ae0
nop
mov ebx, dword [ebp - 0x80]
mov eax, edx
shr eax, cl
mov ecx, dword [ebp - 0x58]
mov ecx, dword [ecx + eax*4]
mov eax, dword [ebp - 0x24]
add ecx, esi
add ecx, dword [eax + 0x80a8]
mov eax, dword [ebp - 0x7c]
mov al, byte [ecx + eax]
mov byte [ecx + 1], al
mov byte [ecx + ebx], al
mov ebx, dword [ebp - 0xc]
mov ecx, dword [ebp - 0x1c]
add edx, ebx
cmp edx, edi
jb 0x667ab0
mov eax, dword [ebp - 0x38]
mov esi, dword [ebp - 4]
add eax, ebx
mov dword [ebp - 0x38], eax
cmp eax, dword [ebp - 0x28]
jb 0x667aa0
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp - 0x38]
cmp eax, dword [ebp - 0x28]
jae case.default.0x66643b
mov edi, dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x1c]
jmp 0x667b10
shr eax, cl
mov edx, esi
mov esi, dword [ebp - 0x60]
mov esi, dword [esi + eax*4]
cmp dword [ebp - 4], edi
jae 0x667b53
nop
mov ebx, dword [ebp - 0x80]
mov eax, edx
shr eax, cl
mov ecx, dword [ebp - 0x58]
mov ecx, dword [ecx + eax*4]
mov eax, dword [ebp - 0x24]
add ecx, esi
add ecx, dword [eax + 0x80a8]
mov eax, dword [ebp - 0x7c]
movzx eax, word [ecx + eax*2]
mov word [ecx + 2], ax
mov word [ecx + ebx*2], ax
mov ebx, dword [ebp - 0xc]
mov ecx, dword [ebp - 0x1c]
add edx, ebx
cmp edx, edi
jb 0x667b20
mov eax, dword [ebp - 0x38]
mov esi, dword [ebp - 4]
add eax, ebx
mov dword [ebp - 0x38], eax
cmp eax, dword [ebp - 0x28]
jb 0x667b10
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp - 0x38]
cmp eax, dword [ebp - 0x28]
jae case.default.0x66643b
mov edi, dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x1c]
lea ebx, [ebx]
shr eax, cl
mov edx, esi
mov esi, dword [ebp - 0x60]
mov esi, dword [esi + eax*4]
cmp dword [ebp - 4], edi
jae 0x667bc0
nop
mov ebx, dword [ebp - 0x80]
mov eax, edx
shr eax, cl
mov ecx, dword [ebp - 0x58]
mov ecx, dword [ecx + eax*4]
mov eax, dword [ebp - 0x24]
add ecx, esi
add ecx, dword [eax + 0x80a8]
mov eax, dword [ebp - 0x7c]
mov eax, dword [ecx + eax*4]
mov dword [ecx + 4], eax
mov dword [ecx + ebx*4], eax
mov ebx, dword [ebp - 0xc]
mov ecx, dword [ebp - 0x1c]
add edx, ebx
cmp edx, edi
jb 0x667b90
mov eax, dword [ebp - 0x38]
mov esi, dword [ebp - 4]
add eax, ebx
mov dword [ebp - 0x38], eax
cmp eax, dword [ebp - 0x28]
jb 0x667b80
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret