Function at 0x10014570
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x84
mov eax, ecx
push ebx
push esi
push edi
mov esi, dword [eax + 0x85b8]
lea edx, [eax + 8]
mov dword [ebp - 0x24], eax
mov edi, dword [esi]
lea ecx, [esi + 0x24]
mov ebx, dword [esi + 0xc]
mov dword [ebp - 0x50], ebx
mov dword [ebp - 8], ecx
test edi, edi
je 0x100145a0
mov eax, dword [edx]
jmp 0x100145a6
mov eax, dword [ecx]
inc eax
mov dword [ebp - 8], ecx
mov ebx, dword [ebp - 0x24]
mov ebx, dword [ebx + 0x8614]
shl ebx, 4
mov dword [ebp - 0x38], ebx
add ebx, 0xfffffff0
sub eax, ebx
mov dword [ebp - 0x14], ebx
cmp eax, 0x10
jae 0x100145d9
test edi, edi
je 0x100145cf
mov eax, dword [edx]
sub eax, ebx
mov dword [ebp - 0x28], eax
jmp 0x100145e0
mov eax, dword [ecx]
inc eax
sub eax, ebx
mov dword [ebp - 0x28], eax
jmp 0x100145e0
mov dword [ebp - 0x28], 0x10
test edi, edi
je 0x100145ec
mov eax, dword [ebp - 0x24]
mov edi, dword [eax + 4]
jmp 0x100145f0
mov edi, dword [esi + 0x1c]
inc edi
mov edx, dword [esi + 0x20]
xor ecx, ecx
mov eax, edx
mov dword [ebp - 0x48], edx
and eax, 0xf
mov dword [ebp - 0x40], edi
cmp ebx, edx
mov ebx, dword [ebp - 0x50]
cmovbe ecx, eax
xor edx, edx
dec ecx
add ecx, ebx
mov eax, ecx
div ebx
sub ecx, edx
xor edx, edx
mov dword [ebp - 0x34], ecx
lea ecx, [ebx - 1]
add ecx, dword [esi + 0x18]
mov eax, ecx
div ebx
sub ecx, edx
mov edx, dword [ebp - 0x24]
mov dword [ebp - 0x20], ecx
mov eax, dword [edx + 0x8550]
mov dword [ebp - 0x10], eax
test eax, eax
je 0x1001463a
mov eax, dword [edx + 0xc]
mov dword [ebp - 0x3c], eax
mov ecx, 2
mov eax, dword [edx + 0x10]
mov dword [ebp - 0x2c], eax
mov eax, dword [edx + 0x1c]
neg eax
sbb eax, eax
xor esi, esi
and eax, 2
mov dword [ebp - 0x18], esi
sub ecx, eax
mov dword [ebp - 0x80], eax
mov al, byte [edx + 0x808c]
mov byte [ebp - 0x55], al
mov al, byte [edx + 0x808d]
mov byte [ebp - 0x71], al
mov eax, dword [edx + 0x86dc]
mov dword [ebp - 0x6c], eax
mov eax, dword [edx + 0x86e0]
mov dword [ebp - 0x7c], ecx
mov ecx, dword [edx + 0x85b8]
mov dword [ebp - 0x70], eax
mov eax, dword [edx + 0x86e4]
xor edx, edx
mov dword [ebp - 0x4c], eax
mov eax, dword [ecx + 0x28]
mov dword [ebp - 0x60], eax
mov eax, dword [ebp - 0x14]
div ebx
mov ecx, dword [ecx + 0x2c]
mov edx, dword [ebp - 0x24]
lea eax, [ecx + eax*4]
mov dword [ebp - 0x5c], eax
cmp ebx, 0x10
jb 0x100146d8
mov eax, dword [edx + 0x64]
test eax, eax
jne 0x100146c0
mov dword [ebp - 4], 0x10
jmp 0x100146f9
cmp eax, 1
mov dword [ebp - 0x1c], 0x17
mov ecx, 0x22
cmove ecx, dword [ebp - 0x1c]
mov dword [ebp - 4], ecx
jmp 0x100146f9
cmp ebx, 4
jb 0x100146f2
cmp dword [edx + 0x64], esi
mov ecx, 0x5d
mov eax, 0x40
cmove ecx, eax
mov dword [ebp - 4], ecx
jmp 0x100146f9
mov dword [ebp - 4], 0x102
mov eax, dword [edx + 0x855c]
mov ecx, 8
test eax, eax
mov edx, 0xb
cmovne ecx, edx
mov dword [ebp - 0xc], ecx
je 0x10014734
cmp ebx, 0x10
jb 0x10014734
mov eax, dword [ebp - 0x10]
cmp eax, 1
je 0x10014728
cmp eax, 2
lea eax, [edx - 0xa]
jne 0x1001472d
mov eax, 2
sub ecx, eax
mov dword [ebp - 0x68], ecx
jmp 0x1001473c
mov dword [ebp - 0x68], ecx
cmp ebx, 1
jbe 0x1001474b
mov eax, 1
rol eax, 1
inc esi
cmp eax, ebx
jb 0x10014741
mov dword [ebp - 0x18], esi
mov esi, dword [ebp - 0x24]
cmp dword [esi + 0x40], 4
jge 0x10014759
mov ecx, dword [esi + 0x28]
jmp 0x1001475c
mov ecx, dword [esi + 0x30]
mov eax, dword [ebp - 0x28]
xor edx, edx
sub eax, dword [ebp - 0x34]
mov dword [ebp - 0x84], eax
div ebx
mov edx, ecx
mov ecx, esi
push eax
call fcn.1000bc00
add esp, 4
test eax, eax
jne 0x100163e0
mov eax, dword [ebp - 0x14]
xor edx, edx
div ebx
test edx, edx
jne case.default.0x1001628c
mov ecx, dword [ebp - 0x38]
cmp ecx, dword [ebp - 0x48]
jbe case.default.0x1001628c
mov eax, dword [ebp - 8]
mov eax, dword [eax]
add eax, 0x10
cmp ecx, eax
ja case.default.0x1001628c
mov edx, dword [ebp - 0x10]
cmp edx, 2
je 0x100147bd
cmp edx, 1
jne 0x10014a0d
mov eax, dword [ebp - 0x3c]
test eax, eax
je 0x10014a10
mov eax, dword [esi + 0x87dc]
xor ecx, ecx
mov dword [ebp - 0x30], eax
mov edx, ebx
mov eax, dword [esi + 0x87e0]
mov dword [ebp - 0x48], eax
xor eax, eax
shl edx, 4
mov dword [ebp - 8], ecx
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x14], edx
nop dword [eax]
xor esi, esi
test edi, edi
je 0x1001486a
mov ecx, esi
mov edx, esi
shr ecx, 1
and edx, 0xfffffff0
and ecx, 7
cmp dword [ebp - 0x10], 2
jne 0x10014815
movzx eax, byte [eax + ecx + 0x101f08e0]
lea eax, [eax + edx*8]
jmp 0x10014825
mov eax, dword [ebp - 8]
shr eax, 1
movzx eax, byte [ecx + eax*8 + 0x101f0860]
lea eax, [eax + edx*4]
mov ecx, dword [ebp - 0x38]
mov dword [ebp - 0x1c], eax
mov eax, esi
and eax, 0xf
shl edx, 4
add esi, ebx
movzx ecx, byte [eax + ecx + 0x101f08e0]
mov eax, dword [ebp - 0x1c]
add ecx, edx
mov edx, dword [ebp - 0x70]
mov eax, dword [edx + eax*4]
mov edx, dword [ebp - 0x30]
mov dword [edx + ecx*4], eax
mov edx, dword [ebp - 0x4c]
mov eax, dword [ebp - 0x1c]
mov eax, dword [edx + eax*4]
mov edx, dword [ebp - 0x48]
mov dword [edx + ecx*4], eax
mov eax, dword [ebp - 0x38]
cmp esi, edi
jb 0x100147f6
mov ecx, dword [ebp - 8]
mov edx, dword [ebp - 0x14]
add eax, edx
add ecx, ebx
mov dword [ebp - 8], ecx
mov dword [ebp - 0x38], eax
cmp eax, 0x100
jb 0x100147f0
cmp ebx, 4
jne 0x100149fe
cmp dword [ebp - 0x10], 1
jne 0x1001492c
xor eax, eax
mov dword [ebp - 0x14], eax
test edi, edi
je 0x1001492c
nop
mov ecx, dword [ebp - 0x30]
mov ebx, eax
mov edi, eax
and ebx, 0xf
and edi, 0xfffffff0
mov dword [ebp - 0x1c], ebx
shl edi, 4
movzx edx, byte [ebx + 0x101f08e0]
movzx eax, byte [ebx + str._____aed]
add edx, edi
movzx esi, byte [ebx + 0x101f0920]
add eax, edi
mov ebx, dword [ebp - 0x30]
add esi, edi
mov dword [ebp - 8], eax
mov ecx, dword [ecx + edx*4]
inc ecx
mov eax, dword [ebx + eax*4]
add eax, ecx
mov ecx, ebx
mov ebx, dword [ebp - 0x48]
sar eax, 1
mov dword [ecx + esi*4], eax
mov ecx, dword [ebx + edx*4]
mov edx, dword [ebp - 8]
mov eax, dword [ebx + edx*4]
inc eax
add eax, ecx
sar eax, 1
mov dword [ebx + esi*4], eax
mov ebx, dword [ebp - 0x1c]
mov esi, dword [ebp - 0x30]
movzx ecx, byte [ebx + str.0154pqut]
mov ebx, dword [ebp - 0x48]
add ecx, edi
mov eax, dword [esi + edx*4]
mov edi, dword [ebp - 0x40]
mov dword [esi + ecx*4], eax
mov eax, dword [ebx + edx*4]
mov dword [ebx + ecx*4], eax
mov eax, dword [ebp - 0x14]
add eax, 8
mov dword [ebp - 0x14], eax
cmp eax, edi
jb 0x100148a0
jmp 0x10014931
mov esi, dword [ebp - 0x30]
xor edx, edx
lea eax, [edi - 8]
xor edi, edi
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x4c], edi
nop dword [eax]
xor ebx, ebx
test eax, eax
je 0x100149bc
mov esi, dword [ebp - 0x4c]
lea ecx, [ebx - 8]
mov eax, ebx
mov edx, ebx
and eax, 0xf
and edx, 0xfffffff0
shl edx, 4
add ebx, 8
movzx edi, byte [eax + edi + 0x101f08e0]
lea eax, [ecx - 4]
and eax, 0xf
and ecx, 0xf
add edi, edx
movzx esi, byte [eax + esi + 0x101f08e0]
mov eax, dword [ebp - 0x4c]
add esi, edx
movzx eax, byte [ecx + eax + 0x101f08e0]
add eax, edx
mov edx, dword [ebp - 0x30]
mov dword [ebp - 8], 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 - 8]
mov ecx, dword [eax + edx*4]
mov eax, dword [eax + edi*4]
inc ecx
mov edi, dword [ebp - 0x4c]
add eax, ecx
mov ecx, dword [ebp - 0x48]
sar eax, 1
mov dword [ecx + esi*4], eax
cmp ebx, dword [ebp - 0x14]
jb 0x10014946
mov esi, dword [ebp - 0x30]
lea eax, [ebx + 4]
and ebx, 0xfffffff0
and eax, 0xf
shl ebx, 4
movzx ecx, byte [eax + edi + 0x101f08e0]
add edi, 0x40
mov eax, dword [esi + edx*4]
add ecx, ebx
mov ebx, dword [ebp - 0x48]
mov dword [ebp - 0x4c], edi
mov dword [esi + ecx*4], eax
mov eax, dword [ebx + edx*4]
mov dword [ebx + ecx*4], eax
mov eax, dword [ebp - 0x14]
cmp edi, 0x100
jb 0x10014940
mov ebx, dword [ebp - 0x50]
mov edi, dword [ebp - 0x40]
jmp 0x10014a01
mov esi, dword [ebp - 0x30]
mov eax, dword [ebp - 0x48]
mov dword [ebp - 0x70], esi
mov esi, dword [ebp - 0x24]
mov dword [ebp - 0x4c], eax
mov eax, dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x2c]
cmp ecx, 1
jne 0x10014ef7
mov ecx, dword [ebp - 0xc]
mov eax, 0x80
mov esi, dword [ebp - 4]
shl eax, cl
cdq
idiv esi
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x3c]
cmp eax, 8
ja case.default.0x10015754
jmp dword [eax*4 + 0x100163ec]
mov edx, dword [ebp - 0x34]
mov dword [ebp - 0x1c], edx
cmp edx, dword [ebp - 0x28]
jae case.default.0x10015754
mov ecx, dword [ebp - 0x18]
mov eax, edx
shl eax, 4
mov dword [ebp - 0x38], eax
mov eax, ebx
shl eax, 4
mov dword [ebp - 0x3c], eax
mov eax, edx
mov esi, dword [ebp - 0x5c]
mov edx, dword [ebp - 0x20]
shr eax, cl
mov dword [ebp - 0x10], edx
mov eax, dword [esi + eax*4]
mov esi, dword [ebp - 4]
mov dword [ebp - 0x2c], eax
cmp edx, edi
jae 0x10014b61
mov ecx, dword [ebp - 0x38]
and edx, 0xf
mov eax, dword [ebp - 0x10]
and eax, 0xfffffff0
shl eax, 4
movzx edx, byte [edx + ecx + 0x101f08e0]
add edx, eax
mov ecx, dword [ebp - 0x68]
mov eax, dword [ebp - 0x70]
mov ebx, dword [eax + edx*4]
mov eax, dword [ebp - 0x4c]
imul ebx, esi
mov eax, dword [eax + edx*4]
imul eax, esi
neg ebx
sar ebx, cl
sar eax, cl
mov ecx, dword [ebp - 0xc]
mov dword [ebp - 8], eax
mov eax, dword [ebp - 0x6c]
mov edx, dword [eax + edx*4]
mov eax, ebx
add edx, dword [ebp - 0x14]
imul edx, esi
mov esi, dword [ebp - 8]
sar eax, 1
sar edx, cl
lea ecx, [esi + 1]
sub edx, eax
sar ecx, 1
mov eax, edx
sub eax, ecx
mov ecx, dword [ebp - 0x18]
add ebx, eax
mov eax, dword [ebp - 0x10]
shr eax, cl
add esi, ebx
mov ecx, dword [ebp - 0x60]
mov dword [ebp - 8], esi
mov ecx, dword [ecx + eax*4]
mov eax, dword [ebp - 0x24]
add ecx, dword [eax + 0x80a8]
mov eax, esi
add ecx, dword [ebp - 0x2c]
mov esi, 0xff
test eax, eax
jns 0x10014b0c
xor eax, eax
jmp 0x10014b14
cmp eax, 0xff
cmovg eax, esi
mov edi, dword [ebp - 0x80]
mov byte [ecx + edi], al
test edx, edx
jns 0x10014b22
xor edx, edx
jmp 0x10014b2b
cmp edx, 0xff
cmovg edx, esi
mov byte [ecx + 1], dl
test ebx, ebx
jns 0x10014b36
xor ebx, ebx
jmp 0x10014b3f
cmp ebx, 0xff
cmovg ebx, esi
mov eax, dword [ebp - 0x7c]
mov edx, dword [ebp - 0x10]
mov edi, dword [ebp - 0x40]
mov esi, dword [ebp - 4]
mov byte [ecx + eax], bl
mov ebx, dword [ebp - 0x50]
add edx, ebx
mov dword [ebp - 0x10], edx
cmp edx, edi
jb 0x10014a82
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x1c]
mov edx, dword [ebp - 0x3c]
add eax, ebx
add dword [ebp - 0x38], edx
mov dword [ebp - 0x1c], eax
cmp eax, dword [ebp - 0x28]
jb 0x10014a66
jmp case.0x100159ad.1
mov edx, dword [ebp - 0x34]
mov dword [ebp - 8], edx
cmp edx, dword [ebp - 0x28]
jae case.default.0x10015754
mov ecx, dword [ebp - 0x18]
mov eax, edx
shl eax, 4
mov dword [ebp - 0x1c], eax
mov eax, ebx
shl eax, 4
mov dword [ebp - 0x40], eax
mov eax, edx
mov esi, dword [ebp - 0x5c]
mov edx, dword [ebp - 0x20]
shr eax, cl
mov dword [ebp - 0x38], edx
mov eax, dword [esi + eax*4]
mov esi, dword [ebp - 4]
mov dword [ebp - 0x30], eax
cmp edx, edi
jae 0x10014d55
nop dword [eax]
mov ecx, dword [ebp - 0x1c]
and edx, 0xf
mov eax, dword [ebp - 0x38]
and eax, 0xfffffff0
shl eax, 4
movzx edx, byte [edx + ecx + 0x101f08e0]
add edx, eax
mov ecx, dword [ebp - 0x68]
mov eax, dword [ebp - 0x70]
mov ebx, dword [eax + edx*4]
mov eax, dword [ebp - 0x4c]
imul ebx, esi
mov esi, dword [eax + edx*4]
imul esi, dword [ebp - 4]
sar ebx, cl
neg ebx
mov eax, ebx
sar eax, 1
sar esi, cl
mov ecx, dword [ebp - 0x6c]
mov edx, dword [ecx + edx*4]
imul edx, dword [ebp - 4]
mov ecx, dword [ebp - 0xc]
sar edx, cl
lea ecx, [esi + 1]
sub edx, eax
sar ecx, 1
mov eax, edx
sub eax, ecx
mov ecx, dword [ebp - 0x18]
add ebx, eax
mov eax, dword [ebp - 0x38]
shr eax, cl
add esi, ebx
mov ecx, dword [ebp - 0x60]
mov dword [ebp - 0x2c], esi
mov esi, dword [ecx + eax*4]
mov eax, dword [ebp - 0x24]
add esi, dword [eax + 0x80a8]
test ebx, ebx
jg 0x10014c3d
mov byte [ebp - 0x3c], 0
xor bl, bl
jmp 0x10014c53
mov eax, ebx
sar eax, 7
mov dword [ebp - 0x3c], eax
cmp eax, 1
jle 0x10014c4f
or bl, 0x80
jmp 0x10014c53
mov byte [ebp - 0x3c], 1
mov eax, dword [ebp - 0x30]
mov byte [esi + eax], bl
test edx, edx
jg 0x10014c63
xor al, al
xor dl, dl
jmp 0x10014c77
mov eax, edx
sar eax, 7
mov dword [ebp - 0x48], eax
cmp eax, 1
jle 0x10014c75
or dl, 0x80
jmp 0x10014c7a
mov al, 1
mov dword [ebp - 0x48], eax
mov ebx, dword [ebp - 0x30]
mov byte [esi + ebx + 1], dl
mov ebx, dword [ebp - 0x2c]
test ebx, ebx
jg 0x10014c90
mov byte [ebp - 0x10], 0
xor bl, bl
jmp 0x10014ca6
mov ecx, ebx
sar ecx, 7
mov dword [ebp - 0x10], ecx
cmp ecx, 1
jle 0x10014ca2
or bl, 0x80
jmp 0x10014ca6
mov byte [ebp - 0x10], 1
mov ecx, dword [ebp - 0x30]
movzx eax, al
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x3c]
cmp al, byte [ebp - 0x48]
mov eax, dword [ebp - 0x10]
mov byte [esi + ecx + 2], bl
mov ecx, dword [ebp - 0x3c]
movzx ecx, cl
cmovbe ecx, dword [ebp - 0x2c]
movzx eax, al
cmp ecx, eax
cmova eax, ecx
mov ecx, dword [ebp - 0x30]
mov dword [ebp - 0x14], eax
mov byte [esi + ecx + 3], al
cmp al, byte [ebp - 0x3c]
jbe 0x10014cfc
mov cl, al
mov eax, dword [ebp - 0x30]
sub cl, byte [ebp - 0x3c]
inc ecx
movzx eax, byte [esi + eax]
lea eax, [eax*2 + 1]
sar eax, cl
mov ecx, dword [ebp - 0x30]
mov byte [esi + ecx], al
mov eax, dword [ebp - 0x14]
cmp al, byte [ebp - 0x48]
jbe 0x10014d1d
mov cl, al
movzx eax, dl
sub cl, byte [ebp - 0x48]
inc ecx
lea eax, [eax*2 + 1]
sar eax, cl
mov ecx, dword [ebp - 0x30]
mov byte [esi + ecx + 1], al
mov eax, dword [ebp - 0x14]
mov edx, dword [ebp - 0x10]
cmp al, dl
jbe 0x10014d3c
mov cl, al
movzx eax, bl
sub cl, dl
inc ecx
lea eax, [eax*2 + 1]
sar eax, cl
mov ecx, dword [ebp - 0x30]
mov byte [esi + ecx + 2], al
mov edx, dword [ebp - 0x38]
mov ebx, dword [ebp - 0x50]
add edx, ebx
mov esi, dword [ebp - 4]
mov dword [ebp - 0x38], edx
cmp edx, edi
jb 0x10014bc0
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 8]
mov edx, dword [ebp - 0x40]
add eax, ebx
add dword [ebp - 0x1c], edx
mov dword [ebp - 8], eax
cmp eax, dword [ebp - 0x28]
jb 0x10014ba1
jmp case.0x100159ad.1
mov eax, dword [ebp - 0x24]
mov ecx, dword [ebp - 0x68]
mov eax, dword [eax + 0x86e8]
mov dword [ebp - 0x2c], eax
mov eax, 0x80
shl eax, cl
cdq
idiv esi
mov edx, dword [ebp - 0x34]
sar eax, 1
mov dword [ebp - 0x3c], eax
mov dword [ebp - 0x1c], edx
cmp edx, dword [ebp - 0x28]
jae case.0x100159ad.1
mov ecx, dword [ebp - 0x18]
mov eax, edx
shl eax, 4
mov dword [ebp - 0x38], eax
mov eax, ebx
shl eax, 4
mov dword [ebp - 0x64], eax
mov eax, edx
mov esi, dword [ebp - 0x5c]
mov edx, dword [ebp - 0x20]
shr eax, cl
mov dword [ebp - 0x10], edx
mov eax, dword [esi + eax*4]
mov esi, dword [ebp - 4]
mov dword [ebp - 0x30], eax
cmp edx, edi
jae 0x10014edb
nop
mov ecx, dword [ebp - 0x38]
and edx, 0xf
mov eax, dword [ebp - 0x10]
mov ebx, dword [ebp - 0x14]
and eax, 0xfffffff0
shl eax, 4
movzx edx, byte [edx + ecx + 0x101f08e0]
add edx, eax
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x6c]
sub ebx, dword [eax + edx*4]
mov eax, dword [ebp - 0x70]
imul ebx, esi
mov eax, dword [eax + edx*4]
imul eax, esi
sar ebx, cl
mov ecx, dword [ebp - 0x68]
sar eax, cl
mov dword [ebp - 8], 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 - 0x2c]
mov edx, dword [eax + edx*4]
lea eax, [ebx + 1]
add edx, dword [ebp - 0x3c]
imul edx, esi
mov esi, dword [ebp - 8]
sar eax, 1
sar edx, cl
mov ecx, esi
sub edx, eax
sar ecx, 1
mov dword [ebp - 0x40], 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 - 0x18]
add esi, eax
mov eax, dword [ebp - 0x10]
shr eax, cl
add edx, esi
mov ecx, dword [ebp - 0x60]
mov dword [ebp - 8], 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]
mov esi, 0xff
test eax, eax
jns 0x10014e7a
xor eax, eax
jmp 0x10014e82
cmp eax, 0xff
cmovg eax, esi
mov byte [ecx], al
test ebx, ebx
jns 0x10014e8c
xor ebx, ebx
jmp 0x10014e95
cmp ebx, 0xff
cmovg ebx, esi
mov byte [ecx + 1], bl
test edx, edx
jns 0x10014ea0
xor edx, edx
jmp 0x10014ea9
cmp edx, 0xff
cmovg edx, esi
mov eax, dword [ebp - 0x40]
mov byte [ecx + 2], dl
test eax, eax
jns 0x10014eb7
xor eax, eax
jmp 0x10014ebf
cmp eax, 0xff
cmovg eax, esi
mov edx, dword [ebp - 0x10]
mov ebx, dword [ebp - 0x50]
add edx, ebx
mov esi, dword [ebp - 4]
mov byte [ecx + 3], al
mov dword [ebp - 0x10], edx
cmp edx, edi
jb 0x10014dd0
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x1c]
mov edx, dword [ebp - 0x64]
add eax, ebx
add dword [ebp - 0x38], edx
mov dword [ebp - 0x1c], eax
cmp eax, dword [ebp - 0x28]
jb 0x10014db3
jmp case.0x100159ad.1
cmp ecx, 2
jne 0x10015247
movzx ecx, byte [ebp - 0x55]
mov eax, 0x8000
mov esi, dword [ebp - 4]
sar eax, cl
mov dword [ebp - 0x30], ecx
mov ecx, dword [ebp - 0xc]
shl eax, cl
cdq
idiv esi
mov dword [ebp - 0x64], eax
mov eax, dword [ebp - 0x3c]
cmp eax, 7
ja case.default.0x10015754
jmp dword [eax*4 + 0x10016410]
mov edx, dword [ebp - 0x34]
mov dword [ebp - 0x1c], edx
cmp edx, dword [ebp - 0x28]
jae case.default.0x10015754
mov ecx, dword [ebp - 0x18]
mov eax, ebx
shl edx, 4
shl eax, 4
mov dword [ebp - 0x3c], eax
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0x10], edx
mov edi, dword [ebp - 0x5c]
mov esi, dword [ebp - 0x20]
shr eax, cl
mov dword [ebp - 8], esi
mov eax, dword [edi + eax*4]
mov edi, dword [ebp - 0x40]
mov dword [ebp - 0x2c], eax
cmp esi, edi
jae 0x1001505e
nop
mov ebx, dword [ebp - 0x4c]
mov eax, esi
and eax, 0xf
mov ecx, dword [ebp - 0x68]
movzx edx, byte [eax + edx + 0x101f08e0]
mov eax, esi
and eax, 0xfffffff0
shl eax, 4
add edx, eax
mov eax, dword [ebp - 0x70]
mov esi, dword [eax + edx*4]
mov edi, dword [ebx + edx*4]
mov eax, dword [ebp - 4]
imul esi, eax
imul edi, eax
neg esi
sar esi, cl
sar edi, cl
mov ecx, dword [ebp - 0x6c]
mov edx, dword [ecx + edx*4]
add edx, dword [ebp - 0x64]
mov ecx, dword [ebp - 0xc]
imul edx, eax
mov eax, esi
sar eax, 1
sar edx, cl
lea ecx, [edi + 1]
sub edx, eax
sar ecx, 1
mov eax, edx
sub eax, ecx
mov ecx, dword [ebp - 0x18]
add esi, eax
mov eax, dword [ebp - 8]
shr eax, cl
add edi, esi
mov ecx, dword [ebp - 0x60]
mov eax, dword [ecx + eax*4]
add eax, dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x24]
mov dword [ebp - 0x38], eax
mov eax, dword [ecx + 0x80a8]
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x30]
mov ecx, eax
shl esi, cl
mov eax, 0xffff
shl edx, cl
shl edi, cl
test esi, esi
jns 0x10015001
xor esi, esi
jmp 0x1001500a
cmp esi, 0xffff
cmovg esi, eax
mov ecx, dword [ebp - 0x38]
mov ebx, dword [ebp - 0x14]
mov word [ebx + ecx*2], si
test edx, edx
jns 0x1001501c
xor edx, edx
jmp 0x10015025
cmp edx, 0xffff
cmovg edx, eax
mov esi, ebx
mov word [esi + ecx*2 + 2], dx
test edi, edi
jns 0x10015034
xor edi, edi
jmp 0x1001503d
cmp edi, 0xffff
cmovg edi, eax
mov ebx, dword [ebp - 0x50]
mov edx, dword [ebp - 0x10]
mov word [esi + ecx*2 + 4], di
mov esi, dword [ebp - 8]
mov edi, dword [ebp - 0x40]
add esi, ebx
mov dword [ebp - 8], esi
cmp esi, edi
jb 0x10014f70
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x1c]
add edx, dword [ebp - 0x3c]
add eax, ebx
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x10], edx
cmp eax, dword [ebp - 0x28]
jb 0x10014f52
jmp case.0x100159ad.1
push dword [ebp - 0x20]
mov edx, esi
push dword [ebp - 0x34]
push ecx
mov ecx, dword [ebp - 0x24]
call fcn.10013510
add esp, 0xc
jmp case.0x100159ad.1
mov eax, dword [ebp - 0x24]
mov eax, dword [eax + 0x86e8]
mov dword [ebp - 0x2c], eax
mov eax, 0x8000
shl eax, cl
cdq
idiv esi
mov ecx, dword [ebp - 0x68]
mov dword [ebp - 0x64], eax
mov eax, 0x8000
shl eax, cl
cdq
idiv esi
mov edx, dword [ebp - 0x34]
sar eax, 1
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x1c], edx
cmp edx, dword [ebp - 0x28]
jae case.0x100159ad.1
mov ecx, dword [ebp - 0x18]
mov eax, ebx
shl edx, 4
shl eax, 4
mov dword [ebp - 0x54], eax
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0x38], edx
mov edi, dword [ebp - 0x5c]
mov esi, dword [ebp - 0x20]
shr eax, cl
mov dword [ebp - 8], esi
mov eax, dword [edi + eax*4]
mov edi, dword [ebp - 0x40]
mov dword [ebp - 0x44], eax
cmp esi, edi
jae 0x1001522b
nop dword [eax]
mov eax, esi
mov ecx, dword [ebp - 0xc]
and eax, 0xf
mov ebx, dword [ebp - 0x68]
movzx edx, byte [eax + edx + 0x101f08e0]
mov eax, esi
mov esi, dword [ebp - 0x64]
and eax, 0xfffffff0
shl eax, 4
add edx, eax
mov eax, dword [ebp - 0x6c]
sub esi, dword [eax + edx*4]
mov eax, dword [ebp - 0x70]
imul esi, dword [ebp - 4]
mov eax, dword [eax + edx*4]
imul eax, dword [ebp - 4]
sar esi, cl
mov ecx, ebx
sar eax, cl
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x4c]
mov edi, dword [eax + edx*4]
lea eax, [esi + 1]
imul edi, dword [ebp - 4]
sar eax, 1
neg edi
sar edi, cl
mov ecx, dword [ebp - 0x2c]
mov edx, dword [ecx + edx*4]
mov ecx, ebx
add edx, dword [ebp - 0x48]
imul edx, dword [ebp - 4]
sar edx, cl
mov ecx, dword [ebp - 0x10]
sub edx, eax
sar ecx, 1
mov eax, edx
sub eax, ecx
lea ecx, [edi + 1]
add esi, eax
sar ecx, 1
mov eax, esi
sub eax, ecx
mov ecx, dword [ebp - 0x10]
add ecx, eax
mov eax, dword [ebp - 8]
add edi, ecx
mov dword [ebp - 0x10], ecx
mov ecx, dword [ebp - 0x18]
shr eax, cl
mov ecx, dword [ebp - 0x60]
mov eax, dword [ecx + eax*4]
add eax, dword [ebp - 0x44]
mov ecx, dword [ebp - 0x24]
mov dword [ebp - 0x14], eax
mov eax, dword [ecx + 0x80a8]
mov ecx, dword [ebp - 0x30]
mov dword [ebp - 0x3c], eax
mov eax, dword [ebp - 0x10]
shl eax, cl
shl esi, cl
shl edi, cl
shl edx, cl
test eax, eax
jns 0x100151b7
xor eax, eax
jmp 0x100151c4
cmp eax, 0xffff
mov ecx, 0xffff
cmovg eax, ecx
mov ecx, dword [ebp - 0x3c]
mov ebx, dword [ebp - 0x14]
mov word [ecx + ebx*2], ax
mov ecx, 0xffff
test esi, esi
jns 0x100151db
xor esi, esi
jmp 0x100151e0
cmp esi, ecx
cmovg esi, ecx
mov eax, dword [ebp - 0x14]
mov ebx, dword [ebp - 0x3c]
mov word [ebx + eax*2 + 2], si
test edi, edi
jns 0x100151f3
xor edi, edi
jmp 0x100151f8
cmp edi, ecx
cmovg edi, ecx
mov word [ebx + eax*2 + 4], di
test edx, edx
jns 0x10015205
xor edx, edx
jmp 0x1001520a
cmp edx, ecx
cmovg edx, ecx
mov esi, dword [ebp - 8]
mov edi, dword [ebp - 0x40]
mov word [ebx + eax*2 + 6], dx
mov ebx, dword [ebp - 0x50]
add esi, ebx
mov edx, dword [ebp - 0x38]
mov dword [ebp - 8], esi
cmp esi, edi
jb 0x10015100
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x1c]
add edx, dword [ebp - 0x54]
add eax, ebx
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x38], edx
cmp eax, dword [ebp - 0x28]
jb 0x100150e1
jmp case.0x100159ad.1
cmp ecx, 3
jne 0x100155a4
cmp eax, 7
ja case.0x100159ad.1
jmp dword [eax*4 + 0x10016430]
mov edx, dword [ebp - 0x34]
mov dword [ebp - 0x1c], edx
cmp edx, dword [ebp - 0x28]
jae case.0x100159ad.1
movzx eax, byte [ebp - 0x55]
mov ecx, dword [ebp - 0x18]
mov dword [ebp - 0x44], eax
mov eax, ebx
shl edx, 4
shl eax, 4
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0x10], edx
nop word [eax + eax]
mov edi, dword [ebp - 0x5c]
mov esi, dword [ebp - 0x20]
shr eax, cl
mov dword [ebp - 8], esi
mov eax, dword [edi + eax*4]
mov edi, dword [ebp - 0x40]
mov dword [ebp - 0x54], eax
cmp esi, edi
jae 0x100153b0
nop dword [eax]
mov ebx, dword [ebp - 0x4c]
mov eax, esi
and eax, 0xf
mov ecx, dword [ebp - 0x68]
movzx edx, byte [eax + edx + 0x101f08e0]
mov eax, esi
and eax, 0xfffffff0
shl eax, 4
add edx, eax
mov eax, dword [ebp - 0x70]
mov esi, dword [eax + edx*4]
mov edi, dword [ebx + edx*4]
mov eax, dword [ebp - 4]
imul esi, eax
imul edi, eax
neg esi
sar esi, cl
sar edi, cl
mov ecx, dword [ebp - 0x6c]
mov edx, dword [ecx + edx*4]
mov ecx, dword [ebp - 0xc]
imul edx, eax
mov eax, esi
sar eax, 1
sar edx, cl
lea ecx, [edi + 1]
sub edx, eax
sar ecx, 1
mov eax, edx
sub eax, ecx
mov ecx, dword [ebp - 0x18]
add esi, eax
mov eax, dword [ebp - 8]
shr eax, cl
add edi, esi
mov ecx, dword [ebp - 0x60]
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 dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x44]
mov ecx, eax
shl esi, cl
mov eax, 0x7fff
shl edx, cl
shl edi, cl
cmp esi, 0xffff8000
jge 0x10015345
mov esi, 0xffff8000
jmp 0x1001534e
cmp esi, 0x7fff
cmovg esi, eax
mov ecx, dword [ebp - 0x64]
mov ebx, dword [ebp - 0x14]
mov word [ebx + ecx*2], si
cmp edx, 0xffff8000
jge 0x10015367
mov edx, 0xffff8000
jmp 0x10015370
cmp edx, 0x7fff
cmovg edx, eax
mov esi, ebx
mov word [esi + ecx*2 + 2], dx
cmp edi, 0xffff8000
jge 0x10015386
mov edi, 0xffff8000
jmp 0x1001538f
cmp edi, 0x7fff
cmovg edi, eax
mov ebx, dword [ebp - 0x50]
mov edx, dword [ebp - 0x10]
mov word [esi + ecx*2 + 4], di
mov esi, dword [ebp - 8]
mov edi, dword [ebp - 0x40]
add esi, ebx
mov dword [ebp - 8], esi
cmp esi, edi
jb 0x100152b0
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x1c]
add edx, dword [ebp - 0x2c]
add eax, ebx
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x10], edx
cmp eax, dword [ebp - 0x28]
jb 0x10015290
jmp case.0x100159ad.1
push dword [ebp - 0x20]
mov esi, dword [ebp - 4]
mov edx, esi
push dword [ebp - 0x34]
mov ecx, dword [ebp - 0x24]
push dword [ebp - 0xc]
call fcn.10013510
mov ecx, dword [ebp - 0xc]
add esp, 0xc
jmp 0x10016235
mov edx, dword [ebp - 0x34]
mov eax, dword [esi + 0x86e8]
mov dword [ebp - 0x54], eax
mov dword [ebp - 0x1c], edx
cmp edx, dword [ebp - 0x28]
jae case.0x100159ad.1
movzx eax, byte [ebp - 0x55]
mov ecx, dword [ebp - 0x18]
mov dword [ebp - 0x2c], eax
mov eax, ebx
shl edx, 4
shl eax, 4
mov dword [ebp - 0x48], eax
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0x10], edx
mov edi, dword [ebp - 0x5c]
mov esi, dword [ebp - 0x20]
shr eax, cl
mov dword [ebp - 8], esi
mov eax, dword [edi + eax*4]
mov edi, dword [ebp - 0x40]
mov dword [ebp - 0x64], eax
cmp esi, edi
jae 0x10015588
nop dword [eax]
mov eax, esi
mov ecx, dword [ebp - 0xc]
and eax, 0xf
mov ebx, dword [ebp - 0x68]
movzx edx, byte [eax + edx + 0x101f08e0]
mov eax, esi
and eax, 0xfffffff0
shl eax, 4
add edx, eax
mov eax, dword [ebp - 0x6c]
mov esi, dword [eax + edx*4]
imul esi, dword [ebp - 4]
mov eax, dword [ebp - 0x70]
mov eax, dword [eax + edx*4]
neg esi
imul eax, dword [ebp - 4]
sar esi, cl
mov ecx, ebx
sar eax, cl
mov dword [ebp - 0x44], eax
mov eax, dword [ebp - 0x4c]
mov edi, dword [eax + edx*4]
lea eax, [esi + 1]
imul edi, dword [ebp - 4]
sar eax, 1
neg edi
sar edi, cl
mov ecx, dword [ebp - 0x54]
mov edx, dword [ecx + edx*4]
mov ecx, ebx
imul edx, dword [ebp - 4]
sar edx, cl
sub edx, eax
mov dword [ebp - 0x14], edx
mov edx, dword [ebp - 0x44]
mov ecx, edx
mov eax, dword [ebp - 0x14]
sar ecx, 1
sub eax, ecx
lea ecx, [edi + 1]
add esi, eax
sar ecx, 1
mov eax, esi
sub eax, ecx
mov ecx, dword [ebp - 0x18]
add edx, eax
mov eax, dword [ebp - 8]
shr eax, cl
add edi, edx
mov ecx, dword [ebp - 0x60]
mov eax, dword [ecx + eax*4]
add eax, dword [ebp - 0x64]
mov ecx, dword [ebp - 0x24]
mov dword [ebp - 0x38], eax
mov eax, dword [ecx + 0x80a8]
mov dword [ebp - 0x3c], eax
mov eax, dword [ebp - 0x2c]
mov ecx, eax
mov eax, dword [ebp - 0x14]
shl edx, cl
shl esi, cl
shl edi, cl
shl eax, cl
cmp edx, 0xffff8000
jge 0x100154fc
mov edx, 0xffff8000
jmp 0x1001550a
cmp edx, 0x7fff
mov ecx, 0x7fff
cmovg edx, ecx
mov ecx, dword [ebp - 0x3c]
mov ebx, dword [ebp - 0x38]
mov word [ecx + ebx*2], dx
mov ecx, 0x7fff
cmp esi, 0xffff8000
jge 0x10015528
mov esi, 0xffff8000
jmp 0x1001552d
cmp esi, ecx
cmovg esi, ecx
mov edx, dword [ebp - 0x38]
mov ebx, dword [ebp - 0x3c]
mov word [ebx + edx*2 + 2], si
cmp edi, 0xffff8000
jge 0x10015547
mov edi, 0xffff8000
jmp 0x1001554c
cmp edi, ecx
cmovg edi, ecx
mov word [ebx + edx*2 + 4], di
cmp eax, 0xffff8000
jge 0x1001555f
mov eax, 0xffff8000
jmp 0x10015567
cmp eax, 0x7fff
cmovg eax, ecx
mov esi, dword [ebp - 8]
mov edi, dword [ebp - 0x40]
mov word [ebx + edx*2 + 6], ax
mov ebx, dword [ebp - 0x50]
add esi, ebx
mov edx, dword [ebp - 0x10]
mov dword [ebp - 8], esi
cmp esi, edi
jb 0x10015440
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x1c]
add edx, dword [ebp - 0x48]
add eax, ebx
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x10], edx
cmp eax, dword [ebp - 0x28]
jb 0x10015420
jmp case.0x100159ad.1
mov esi, dword [ebp - 4]
movzx edx, byte [ebp - 0x55]
mov dword [ebp - 0x30], edx
jmp 0x100155b3
mov edx, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x2c]
cmp ecx, 4
jne 0x10015724
cmp eax, 7
ja case.0x100159ad.1
movzx eax, byte [eax + 0x1001645c]
jmp dword [eax*4 + 0x10016450]
mov edx, dword [ebp - 0x34]
mov eax, edx
mov dword [ebp - 0x14], eax
cmp edx, dword [ebp - 0x28]
jae case.0x100159ad.1
shl edx, 4
mov ecx, ebx
shl ecx, 4
mov dword [ebp - 0x44], ecx
mov ecx, dword [ebp - 0x18]
mov dword [ebp - 0x1c], edx
mov edi, dword [ebp - 0x5c]
mov esi, dword [ebp - 0x20]
shr eax, cl
mov dword [ebp - 8], esi
mov eax, dword [edi + eax*4]
mov edi, dword [ebp - 0x40]
mov dword [ebp - 0x54], eax
cmp esi, edi
jae 0x100156ed
mov ebx, dword [ebp - 0x4c]
mov eax, esi
and eax, 0xf
mov ecx, dword [ebp - 0x68]
movzx edx, byte [eax + edx + 0x101f08e0]
mov eax, esi
and eax, 0xfffffff0
shl eax, 4
add edx, eax
mov eax, dword [ebp - 0x70]
mov esi, dword [eax + edx*4]
mov ebx, dword [ebx + edx*4]
mov eax, dword [ebp - 4]
imul esi, eax
imul ebx, eax
neg esi
sar esi, cl
sar ebx, cl
mov ecx, dword [ebp - 0x6c]
mov edi, dword [ecx + edx*4]
mov ecx, dword [ebp - 0xc]
imul edi, eax
mov eax, esi
sar eax, 1
sar edi, cl
lea ecx, [ebx + 1]
sub edi, eax
sar ecx, 1
mov eax, edi
sub eax, ecx
mov ecx, dword [ebp - 0x18]
add esi, eax
mov eax, dword [ebp - 8]
shr eax, cl
mov ecx, dword [ebp - 0x60]
mov dword [ebp - 0x2c], esi
mov esi, dword [ecx + eax*4]
mov eax, dword [ebp - 0x24]
mov ecx, dword [ebp - 0x2c]
add esi, dword [ebp - 0x54]
mov edx, dword [eax + 0x80a8]
mov eax, ecx
sar eax, 0x1f
and ecx, 0x7fff
movzx eax, ax
xor ecx, eax
sub ecx, eax
mov eax, edi
mov word [edx + esi*2], cx
and edi, 0x7fff
mov ecx, dword [ebp - 0x2c]
sar eax, 0x1f
add ecx, ebx
mov ebx, dword [ebp - 0x50]
movzx eax, ax
xor edi, eax
sub edi, eax
mov eax, ecx
sar eax, 0x1f
and ecx, 0x7fff
movzx eax, ax
xor ecx, eax
mov word [edx + esi*2 + 2], di
mov edi, dword [ebp - 0x40]
sub ecx, eax
mov word [edx + esi*2 + 4], cx
mov esi, dword [ebp - 8]
mov edx, dword [ebp - 0x1c]
add esi, ebx
mov dword [ebp - 8], esi
cmp esi, edi
jb 0x10015614
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x14]
add edx, dword [ebp - 0x44]
add eax, ebx
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x1c], edx
cmp eax, dword [ebp - 0x28]
jb 0x100155f8
jmp case.0x100159ad.1
push dword [ebp - 0x20]
mov ecx, dword [ebp - 0x24]
mov edx, esi
push dword [ebp - 0x34]
push dword [ebp - 0xc]
call fcn.10013510
add esp, 0xc
jmp case.0x100159ad.1
cmp ecx, 5
jne 0x10015868
mov ecx, edx
mov eax, 0x80000000
sar eax, cl
mov ecx, dword [ebp - 0xc]
shl eax, cl
cdq
idiv esi
mov dword [ebp - 0x54], eax
mov eax, dword [ebp - 0x3c]
cmp eax, 7
ja case.default.0x10015754
movzx ecx, byte [eax + 0x10016470]
jmp dword [ecx*4 + 0x10016464]
mov edx, dword [ebp - 0x34]
mov eax, edx
mov dword [ebp - 0x14], eax
cmp edx, dword [ebp - 0x28]
jae case.0x100159ad.1
shl edx, 4
mov ecx, ebx
shl ecx, 4
mov dword [ebp - 0x64], ecx
mov ecx, dword [ebp - 0x18]
mov dword [ebp - 0x1c], edx
nop dword [eax]
mov edi, dword [ebp - 0x5c]
mov esi, dword [ebp - 0x20]
shr eax, cl
mov dword [ebp - 8], esi
mov eax, dword [edi + eax*4]
mov edi, dword [ebp - 0x40]
mov dword [ebp - 0x44], eax
cmp esi, edi
jae 0x1001584c
nop dword [eax]
mov ebx, dword [ebp - 0x4c]
mov eax, esi
and eax, 0xf
mov ecx, dword [ebp - 0x68]
movzx edx, byte [eax + edx + 0x101f08e0]
mov eax, esi
and eax, 0xfffffff0
shl eax, 4
add edx, eax
mov eax, dword [ebp - 0x70]
mov esi, dword [eax + edx*4]
mov ebx, dword [ebx + edx*4]
mov eax, dword [ebp - 4]
imul esi, eax
imul ebx, eax
neg esi
sar esi, cl
sar ebx, cl
mov ecx, dword [ebp - 0x6c]
mov edi, dword [ecx + edx*4]
add edi, dword [ebp - 0x54]
mov ecx, dword [ebp - 0xc]
imul edi, eax
mov eax, esi
sar eax, 1
sar edi, cl
lea ecx, [ebx + 1]
sub edi, eax
sar ecx, 1
mov eax, edi
sub eax, ecx
mov ecx, dword [ebp - 0x18]
add esi, eax
mov eax, dword [ebp - 8]
shr eax, cl
mov ecx, dword [ebp - 0x60]
mov dword [ebp - 0x2c], esi
mov esi, dword [ecx + eax*4]
mov eax, dword [ebp - 0x24]
add esi, dword [ebp - 0x44]
mov ecx, dword [ebp - 0x30]
shl edi, cl
mov edx, dword [eax + 0x80a8]
mov eax, dword [ebp - 0x2c]
shl eax, cl
mov dword [edx + esi*4], eax
mov eax, dword [ebp - 0x2c]
add eax, ebx
mov dword [edx + esi*4 + 4], edi
mov ebx, dword [ebp - 0x50]
mov edi, dword [ebp - 0x40]
shl eax, cl
mov dword [edx + esi*4 + 8], eax
mov esi, dword [ebp - 8]
mov edx, dword [ebp - 0x1c]
add esi, ebx
mov dword [ebp - 8], esi
cmp esi, edi
jb 0x100157a0
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x14]
add edx, dword [ebp - 0x64]
add eax, ebx
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x1c], edx
cmp eax, dword [ebp - 0x28]
jb 0x10015780
jmp case.0x100159ad.1
cmp ecx, 6
jne 0x10015995
cmp eax, 7
ja case.0x100159ad.1
movzx eax, byte [eax + 0x10016484]
jmp dword [eax*4 + 0x10016478]
mov edx, dword [ebp - 0x34]
mov eax, edx
mov dword [ebp - 0x14], eax
cmp edx, dword [ebp - 0x28]
jae case.0x100159ad.1
shl edx, 4
mov ecx, ebx
shl ecx, 4
mov dword [ebp - 0x44], ecx
mov ecx, dword [ebp - 0x18]
mov dword [ebp - 0x1c], edx
nop word [eax + eax]
mov edi, dword [ebp - 0x5c]
mov esi, dword [ebp - 0x20]
shr eax, cl
mov dword [ebp - 8], esi
mov eax, dword [edi + eax*4]
mov edi, dword [ebp - 0x40]
mov dword [ebp - 0x54], eax
cmp esi, edi
jae 0x10015979
nop dword [eax]
mov ebx, dword [ebp - 0x4c]
mov eax, esi
and eax, 0xf
mov ecx, dword [ebp - 0x68]
movzx edx, byte [eax + edx + 0x101f08e0]
mov eax, esi
and eax, 0xfffffff0
shl eax, 4
add edx, eax
mov eax, dword [ebp - 0x70]
mov esi, dword [eax + edx*4]
mov ebx, dword [ebx + edx*4]
mov eax, dword [ebp - 4]
imul esi, eax
imul ebx, eax
neg esi
sar esi, cl
sar ebx, cl
mov ecx, dword [ebp - 0x6c]
mov edi, dword [ecx + edx*4]
mov ecx, dword [ebp - 0xc]
imul edi, eax
mov eax, esi
sar eax, 1
sar edi, cl
lea ecx, [ebx + 1]
sub edi, eax
sar ecx, 1
mov eax, edi
sub eax, ecx
mov ecx, dword [ebp - 0x18]
add esi, eax
mov eax, dword [ebp - 8]
shr eax, cl
mov ecx, dword [ebp - 0x60]
mov dword [ebp - 0x2c], esi
mov esi, dword [ecx + eax*4]
mov eax, dword [ebp - 0x24]
add esi, dword [ebp - 0x54]
mov ecx, dword [ebp - 0x30]
shl edi, cl
mov edx, dword [eax + 0x80a8]
mov eax, dword [ebp - 0x2c]
shl eax, cl
mov dword [edx + esi*4], eax
mov eax, dword [ebp - 0x2c]
add eax, ebx
mov dword [edx + esi*4 + 4], edi
mov ebx, dword [ebp - 0x50]
mov edi, dword [ebp - 0x40]
shl eax, cl
mov dword [edx + esi*4 + 8], eax
mov esi, dword [ebp - 8]
mov edx, dword [ebp - 0x1c]
add esi, ebx
mov dword [ebp - 8], esi
cmp esi, edi
jb 0x100158d0
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x14]
add edx, dword [ebp - 0x44]
add eax, ebx
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x1c], edx
cmp eax, dword [ebp - 0x28]
jb 0x100158b0
jmp case.0x100159ad.1
cmp ecx, 7
jne 0x10015c63
cmp eax, ecx
ja case.0x100159ad.1
movzx eax, byte [eax + 0x10016498]
jmp dword [eax*4 + 0x1001648c]
mov ecx, dword [ebp - 0x34]
mov dword [ebp - 0x48], ecx
cmp ecx, dword [ebp - 0x28]
jae case.0x100159ad.1
mov eax, 0x17
sub eax, edx
mov dword [ebp - 0x1c], eax
mov eax, ecx
mov ecx, dword [ebp - 0x18]
shl eax, 4
mov dword [ebp - 0x14], eax
mov eax, ebx
shl eax, 4
mov dword [ebp - 0x78], eax
mov eax, dword [ebp - 0x48]
mov edi, dword [ebp - 0x5c]
mov esi, dword [ebp - 0x20]
shr eax, cl
mov dword [ebp - 0x3c], esi
mov eax, dword [edi + eax*4]
mov edi, dword [ebp - 0x40]
mov dword [ebp - 0x54], eax
cmp esi, edi
jae 0x10015c47
movsx eax, byte [ebp - 0x71]
mov edi, 1
mov ecx, edx
mov dword [ebp - 8], eax
shl edi, cl
nop
mov ecx, dword [ebp - 0x14]
mov eax, esi
and eax, 0xf
mov ebx, dword [ebp - 0x4c]
movzx edx, byte [eax + ecx + 0x101f08e0]
mov eax, esi
and eax, 0xfffffff0
mov ecx, dword [ebp - 0x68]
shl eax, 4
add edx, eax
mov eax, dword [ebp - 0x70]
mov esi, dword [eax + edx*4]
mov ebx, dword [ebx + edx*4]
mov eax, dword [ebp - 4]
imul esi, eax
imul ebx, eax
neg esi
sar esi, cl
sar ebx, cl
mov ecx, dword [ebp - 0x6c]
mov edx, dword [ecx + edx*4]
mov ecx, dword [ebp - 0xc]
imul edx, eax
mov eax, esi
sar eax, 1
sar edx, cl
lea ecx, [ebx + 1]
sub edx, eax
sar ecx, 1
mov eax, dword [ebp - 0x3c]
mov dword [ebp - 0x64], edx
sub edx, ecx
mov ecx, dword [ebp - 0x18]
add esi, edx
shr eax, cl
add ebx, esi
mov ecx, dword [ebp - 0x60]
mov dword [ebp - 0x2c], ebx
mov eax, dword [ecx + eax*4]
add eax, dword [ebp - 0x54]
mov ecx, dword [ebp - 0x30]
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x24]
mov eax, dword [eax + 0x80a8]
mov dword [ebp - 0x38], eax
mov eax, esi
sar eax, 0x1f
xor esi, eax
mov dword [ebp - 0x44], eax
sub esi, eax
lea eax, [edi - 1]
and eax, esi
mov edx, esi
or eax, edi
shr edx, cl
test edx, edx
mov ebx, edx
mov ecx, 1
mov esi, edi
cmove ebx, ecx
xor esi, eax
test edx, edx
cmovne esi, eax
mov eax, 0x7f
sub eax, dword [ebp - 8]
add ebx, eax
cmp esi, edi
jge 0x10015ae0
nop word [eax + eax]
cmp ebx, 1
jle 0x10015ae0
test esi, esi
jle 0x10015ae0
add esi, esi
dec ebx
cmp esi, edi
jl 0x10015ad0
mov ecx, dword [ebp - 0x1c]
mov eax, edi
xor eax, esi
mov edx, esi
cmp esi, edi
cmovge edx, eax
xor eax, eax
shl edx, cl
cmp esi, edi
mov ecx, dword [ebp - 0x38]
cmovge eax, ebx
shl eax, 0x17
or edx, eax
mov eax, dword [ebp - 0x44]
and eax, 0x80000000
or edx, eax
mov eax, dword [ebp - 0x10]
mov dword [ecx + eax*4], edx
mov ecx, dword [ebp - 0x64]
sar ecx, 0x1f
mov eax, ecx
mov dword [ebp - 0x44], ecx
xor eax, dword [ebp - 0x64]
sub eax, ecx
mov ecx, dword [ebp - 0x30]
mov edx, eax
shr edx, cl
lea ecx, [edi - 1]
and ecx, eax
mov ebx, edx
or ecx, edi
mov eax, 1
test edx, edx
mov esi, ecx
cmove ebx, eax
xor esi, edi
test edx, edx
mov eax, 0x7f
cmovne esi, ecx
sub eax, dword [ebp - 8]
add ebx, eax
cmp esi, edi
jge 0x10015b60
cmp ebx, 1
jle 0x10015b60
test esi, esi
jle 0x10015b60
add esi, esi
dec ebx
cmp esi, edi
jl 0x10015b50
mov ecx, dword [ebp - 0x1c]
mov eax, esi
xor eax, edi
mov edx, esi
cmp esi, edi
cmovge edx, eax
xor eax, eax
shl edx, cl
cmp esi, edi
mov ecx, dword [ebp - 0x38]
cmovge eax, ebx
mov esi, dword [ebp - 0x2c]
shl eax, 0x17
or edx, eax
mov eax, dword [ebp - 0x44]
and eax, 0x80000000
or edx, eax
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x44], edx
movss xmm0, dword [ebp - 0x44]
movss dword [ecx + eax*4 + 4], xmm0
mov eax, esi
mov ecx, dword [ebp - 0x30]
sar eax, 0x1f
xor esi, eax
mov dword [ebp - 0x44], eax
sub esi, eax
lea eax, [edi - 1]
and eax, esi
mov edx, esi
or eax, edi
shr edx, cl
test edx, edx
mov esi, eax
mov ebx, edx
mov ecx, 1
cmove ebx, ecx
xor esi, edi
test edx, edx
cmovne esi, eax
mov eax, 0x7f
sub eax, dword [ebp - 8]
add ebx, eax
cmp esi, edi
jge 0x10015bf0
nop word [eax + eax]
cmp ebx, 1
jle 0x10015bf0
test esi, esi
jle 0x10015bf0
add esi, esi
dec ebx
cmp esi, edi
jl 0x10015be0
mov ecx, dword [ebp - 0x1c]
mov eax, esi
xor eax, edi
mov edx, esi
cmp esi, edi
cmovge edx, eax
xor eax, eax
shl edx, cl
cmp esi, edi
mov esi, dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x38]
cmovge eax, ebx
mov ebx, dword [ebp - 0x50]
add esi, ebx
shl eax, 0x17
or edx, eax
mov dword [ebp - 0x3c], esi
mov eax, dword [ebp - 0x44]
and eax, 0x80000000
or edx, eax
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x44], edx
movss xmm0, dword [ebp - 0x44]
movss dword [ecx + eax*4 + 8], xmm0
cmp esi, dword [ebp - 0x40]
jb 0x10015a10
mov edi, dword [ebp - 0x40]
mov ecx, dword [ebp - 0x18]
mov edx, dword [ebp - 0x30]
mov eax, dword [ebp - 0x48]
mov esi, dword [ebp - 0x78]
add eax, ebx
add dword [ebp - 0x14], esi
mov dword [ebp - 0x48], eax
cmp eax, dword [ebp - 0x28]
jb 0x100159e3
jmp case.0x100159ad.1
test ecx, ecx
jne 0x10015e36
mov ecx, dword [ebp - 0x24]
mov edx, dword [ebp - 0x34]
cmp dword [ecx + 0x40], 4
mov eax, dword [ecx + 0x18]
mov dword [ebp - 0x1c], eax
mov eax, edx
jge 0x10015d57
mov dword [ebp - 8], eax
cmp edx, dword [ebp - 0x28]
jae case.0x100159ad.1
mov esi, edx
mov ecx, ebx
shl esi, 4
shl ecx, 4
mov dword [ebp - 0x78], ecx
mov ecx, dword [ebp - 0x18]
mov dword [ebp - 0x14], esi
mov edi, dword [ebp - 0x5c]
mov edx, dword [ebp - 0x20]
shr eax, cl
mov dword [ebp - 0x10], edx
mov eax, dword [edi + eax*4]
add eax, dword [ebp - 0x1c]
mov edi, dword [ebp - 0x40]
mov dword [ebp - 0x2c], eax
cmp edx, edi
jae 0x10015d3b
mov ebx, dword [ebp - 0x60]
shr edx, cl
mov cl, 7
mov al, byte [ebx + edx*4]
mov esi, dword [ebx + edx*4]
and al, 7
mov edx, dword [ebp - 0x14]
sub cl, al
mov eax, dword [ebp - 0x24]
shr esi, 3
add esi, dword [eax + 0x80a8]
mov eax, dword [ebp - 0x2c]
mov bl, byte [esi + eax]
mov eax, dword [ebp - 0x10]
and eax, 0xf
movzx edx, byte [eax + edx + 0x101f08e0]
mov eax, dword [ebp - 0x10]
and eax, 0xfffffff0
shl eax, 4
add edx, eax
mov eax, dword [ebp - 0x6c]
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 - 0x2c]
and dl, 1
shl dl, cl
mov ecx, dword [ebp - 0x18]
xor dl, bl
mov ebx, dword [ebp - 0x50]
mov byte [esi + eax], dl
mov edx, dword [ebp - 0x10]
add edx, ebx
mov dword [ebp - 0x10], edx
cmp edx, edi
jb 0x10015cc1
mov esi, dword [ebp - 0x14]
mov eax, dword [ebp - 8]
add esi, dword [ebp - 0x78]
add eax, ebx
mov dword [ebp - 8], eax
mov dword [ebp - 0x14], esi
cmp eax, dword [ebp - 0x28]
jb 0x10015ca2
jmp case.0x100159ad.1
mov dword [ebp - 0x10], eax
cmp edx, dword [ebp - 0x28]
jae case.0x100159ad.1
mov esi, edx
mov ecx, ebx
shl esi, 4
shl ecx, 4
mov dword [ebp - 0x14], esi
mov dword [ebp - 0x54], ecx
mov ecx, dword [ebp - 0x18]
mov edx, dword [ebp - 0x20]
shr eax, cl
mov ecx, dword [ebp - 0x5c]
mov dword [ebp - 8], edx
mov ecx, dword [ecx + eax*4]
add ecx, dword [ebp - 0x1c]
cmp edx, edi
jae 0x10015e1a
mov al, cl
mov bl, 7
and al, 7
sub bl, al
shr ecx, 3
movzx eax, bl
mov byte [ebp - 0x71], bl
mov dword [ebp - 0x2c], ecx
mov dword [ebp - 0x78], eax
mov ecx, dword [ebp - 0x18]
mov eax, edx
shr eax, cl
mov ecx, dword [ebp - 0x60]
mov esi, dword [ecx + eax*4]
mov eax, dword [ebp - 0x24]
mov ecx, dword [ebp - 0x14]
add esi, dword [eax + 0x80a8]
mov eax, dword [ebp - 0x2c]
mov bl, byte [esi + eax]
mov eax, edx
and eax, 0xf
movzx ecx, byte [eax + ecx + 0x101f08e0]
mov eax, edx
and eax, 0xfffffff0
shl eax, 4
add ecx, eax
mov eax, dword [ebp - 0x6c]
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, bl
shr al, cl
mov ecx, dword [ebp - 0x78]
add dl, al
mov eax, dword [ebp - 0x2c]
and dl, 1
shl dl, cl
xor dl, bl
mov ebx, dword [ebp - 0x50]
mov byte [esi + eax], dl
mov edx, dword [ebp - 8]
add edx, ebx
mov dword [ebp - 8], edx
cmp edx, edi
jb 0x10015da6
mov esi, dword [ebp - 0x14]
mov eax, dword [ebp - 0x10]
add esi, dword [ebp - 0x54]
add eax, ebx
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x14], esi
cmp eax, dword [ebp - 0x28]
jb 0x10015d73
jmp case.0x100159ad.1
cmp ecx, 8
jne 0x10015f7c
mov ecx, dword [ebp - 0xc]
mov eax, 0x10
shl eax, cl
cdq
idiv esi
mov edx, dword [ebp - 0x34]
mov dword [ebp - 0x78], eax
mov dword [ebp - 0x14], edx
cmp edx, dword [ebp - 0x28]
jae case.default.0x10015754
mov ecx, dword [ebp - 0x18]
mov eax, edx
shl eax, 4
mov dword [ebp - 8], eax
mov eax, ebx
shl eax, 4
mov dword [ebp - 0x64], eax
mov eax, edx
mov ebx, dword [ebp - 0x5c]
mov edx, dword [ebp - 0x20]
shr eax, cl
mov dword [ebp - 0x10], edx
mov eax, dword [ebx + eax*4]
mov ebx, dword [ebp - 0x50]
mov dword [ebp - 0x54], eax
cmp edx, edi
jae 0x10015f60
nop
mov ecx, dword [ebp - 8]
and edx, 0xf
mov eax, dword [ebp - 0x10]
and eax, 0xfffffff0
shl eax, 4
movzx edx, byte [edx + ecx + 0x101f08e0]
add edx, eax
mov ecx, dword [ebp - 0x68]
mov eax, dword [ebp - 0x70]
mov edi, dword [eax + edx*4]
mov eax, dword [ebp - 0x4c]
imul edi, esi
mov esi, dword [eax + edx*4]
imul esi, dword [ebp - 4]
neg edi
sar edi, cl
mov eax, edi
sar eax, 1
sar esi, cl
mov ecx, dword [ebp - 0x6c]
mov edx, dword [ecx + edx*4]
add edx, dword [ebp - 0x78]
imul edx, dword [ebp - 4]
mov ecx, dword [ebp - 0xc]
sar edx, cl
lea ecx, [esi + 1]
sub edx, eax
sar ecx, 1
mov eax, edx
sub eax, ecx
mov ecx, dword [ebp - 0x18]
add edi, eax
mov eax, dword [ebp - 0x10]
shr eax, cl
add esi, edi
mov ecx, dword [ebp - 0x60]
mov ecx, dword [ecx + eax*4]
mov eax, dword [ebp - 0x24]
add ecx, dword [ebp - 0x54]
mov eax, dword [eax + 0x80a8]
mov dword [ebp - 0x44], eax
mov eax, 0x1f
test edi, edi
jns 0x10015f14
xor edi, edi
jmp 0x10015f1a
cmp edi, 0x1f
cmovg edi, eax
test edx, edx
jns 0x10015f22
xor edx, edx
jmp 0x10015f28
cmp edx, 0x1f
cmovg edx, eax
test esi, esi
jns 0x10015f30
xor esi, esi
jmp 0x10015f36
cmp esi, 0x1f
cmovg esi, eax
mov eax, dword [ebp - 0x44]
shl esi, 5
add esi, edx
mov edx, dword [ebp - 0x10]
shl esi, 5
add edx, ebx
add esi, edi
mov dword [ebp - 0x10], edx
mov edi, dword [ebp - 0x40]
mov word [eax + ecx*2], si
mov esi, dword [ebp - 4]
cmp edx, edi
jb 0x10015e90
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x14]
mov edx, dword [ebp - 0x64]
add eax, ebx
add dword [ebp - 8], edx
mov dword [ebp - 0x14], eax
cmp eax, dword [ebp - 0x28]
jb 0x10015e73
jmp case.0x100159ad.1
cmp ecx, 0xa
jne 0x100160df
mov ecx, dword [ebp - 0xc]
mov eax, 0x20
shl eax, cl
cdq
idiv esi
mov edx, dword [ebp - 0x34]
mov dword [ebp - 0x78], eax
mov dword [ebp - 0x14], edx
cmp edx, dword [ebp - 0x28]
jae case.default.0x10015754
mov ecx, dword [ebp - 0x18]
mov eax, edx
shl eax, 4
mov dword [ebp - 8], eax
mov eax, ebx
shl eax, 4
mov dword [ebp - 0x1c], eax
mov eax, edx
mov dword [ebp - 0x64], 0x3f
mov ebx, dword [ebp - 0x5c]
mov edx, dword [ebp - 0x20]
shr eax, cl
mov dword [ebp - 0x10], edx
mov eax, dword [ebx + eax*4]
mov ebx, dword [ebp - 0x50]
mov dword [ebp - 0x54], eax
cmp edx, edi
jae 0x100160c3
nop dword [eax]
mov ecx, dword [ebp - 8]
and edx, 0xf
mov eax, dword [ebp - 0x10]
and eax, 0xfffffff0
shl eax, 4
movzx edx, byte [edx + ecx + 0x101f08e0]
add edx, eax
mov ecx, dword [ebp - 0x68]
mov eax, dword [ebp - 0x70]
mov eax, dword [eax + edx*4]
imul eax, esi
mov esi, dword [ebp - 0x4c]
mov esi, dword [esi + edx*4]
neg eax
imul esi, dword [ebp - 4]
sar eax, cl
sar esi, cl
mov ecx, dword [ebp - 0x6c]
mov edi, dword [ecx + edx*4]
lea edx, [esi + 1]
add edi, dword [ebp - 0x78]
imul edi, dword [ebp - 4]
mov ecx, dword [ebp - 0xc]
sar edx, 1
sar edi, cl
mov ecx, eax
sar ecx, 1
sub edi, ecx
mov ecx, edi
sub ecx, edx
add eax, ecx
mov ecx, dword [ebp - 0x18]
add esi, eax
cdq
sub eax, edx
sar eax, 1
mov dword [ebp - 0x44], eax
mov eax, esi
cdq
sub eax, edx
mov edx, dword [ebp - 0x10]
shr edx, cl
mov ecx, dword [ebp - 0x60]
sar eax, 1
mov esi, dword [ecx + edx*4]
mov edx, 0x1f
mov ecx, dword [ebp - 0x24]
add esi, dword [ebp - 0x54]
mov ecx, dword [ecx + 0x80a8]
mov dword [ebp - 0x2c], ecx
mov ecx, dword [ebp - 0x44]
test ecx, ecx
jns 0x10016076
xor ecx, ecx
jmp 0x1001607c
cmp ecx, 0x1f
cmovg ecx, edx
test edi, edi
jns 0x10016084
xor edi, edi
jmp 0x1001608b
cmp edi, 0x3f
cmovg edi, dword [ebp - 0x64]
test eax, eax
jns 0x10016093
xor eax, eax
jmp 0x10016099
cmp eax, 0x1f
cmovg eax, edx
mov edx, dword [ebp - 0x10]
shl eax, 6
add edx, ebx
add eax, edi
mov dword [ebp - 0x10], edx
mov edi, dword [ebp - 0x40]
shl eax, 5
add eax, ecx
mov ecx, dword [ebp - 0x2c]
mov word [ecx + esi*2], ax
mov esi, dword [ebp - 4]
cmp edx, edi
jb 0x10015fe0
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x14]
mov edx, dword [ebp - 0x1c]
add eax, ebx
add dword [ebp - 8], edx
mov dword [ebp - 0x14], eax
cmp eax, dword [ebp - 0x28]
jb 0x10015fc0
jmp case.0x100159ad.1
cmp ecx, 9
mov ecx, dword [ebp - 0xc]
jne case.default.0x10015754
mov eax, 0x200
shl eax, cl
cdq
idiv esi
mov edx, dword [ebp - 0x34]
mov dword [ebp - 0x78], eax
mov dword [ebp - 0x14], edx
cmp edx, dword [ebp - 0x28]
jae case.default.0x10015754
mov ecx, dword [ebp - 0x18]
mov eax, edx
shl eax, 4
mov dword [ebp - 8], eax
mov eax, ebx
shl eax, 4
mov dword [ebp - 0x64], eax
mov eax, edx
nop dword [eax]
mov esi, dword [ebp - 0x5c]
mov edx, dword [ebp - 0x20]
shr eax, cl
mov dword [ebp - 0x10], edx
mov eax, dword [esi + eax*4]
mov esi, dword [ebp - 4]
mov dword [ebp - 0x54], eax
cmp edx, edi
jae 0x10016218
nop dword [eax]
mov ecx, dword [ebp - 8]
and edx, 0xf
mov eax, dword [ebp - 0x10]
and eax, 0xfffffff0
mov ebx, dword [ebp - 0x60]
shl eax, 4
movzx edx, byte [edx + ecx + 0x101f08e0]
add edx, eax
mov ecx, dword [ebp - 0x68]
mov eax, dword [ebp - 0x70]
mov edi, dword [eax + edx*4]
mov eax, dword [ebp - 0x4c]
imul edi, esi
mov esi, dword [eax + edx*4]
imul esi, dword [ebp - 4]
neg edi
sar edi, cl
mov eax, edi
sar eax, 1
sar esi, cl
mov ecx, dword [ebp - 0x6c]
mov edx, dword [ecx + edx*4]
add edx, dword [ebp - 0x78]
imul edx, dword [ebp - 4]
mov ecx, dword [ebp - 0xc]
sar edx, cl
lea ecx, [esi + 1]
sub edx, eax
sar ecx, 1
mov eax, edx
sub eax, ecx
mov ecx, dword [ebp - 0x18]
add edi, eax
mov eax, dword [ebp - 0x10]
shr eax, cl
add esi, edi
mov eax, dword [ebx + eax*4]
mov ebx, dword [ebp - 0x24]
add eax, dword [ebp - 0x54]
mov ebx, dword [ebx + 0x80a8]
mov dword [ebp - 0x44], ebx
mov ebx, 0x3ff
test edi, edi
jns 0x100161c4
xor edi, edi
jmp 0x100161cd
cmp edi, 0x3ff
cmovg edi, ebx
test edx, edx
jns 0x100161d5
xor edx, edx
jmp 0x100161de
cmp edx, 0x3ff
cmovg edx, ebx
test esi, esi
jns 0x100161e6
xor esi, esi
jmp 0x100161ef
cmp esi, 0x3ff
cmovg esi, ebx
mov ebx, dword [ebp - 0x50]
shl esi, 0xa
add esi, edx
mov edx, dword [ebp - 0x44]
shl esi, 0xa
add esi, edi
mov edi, dword [ebp - 0x40]
mov dword [edx + eax*4], esi
mov edx, dword [ebp - 0x10]
mov esi, dword [ebp - 4]
add edx, ebx
mov dword [ebp - 0x10], edx
cmp edx, edi
jb 0x10016140
mov eax, dword [ebp - 0x14]
mov edx, dword [ebp - 0x64]
add eax, ebx
add dword [ebp - 8], edx
mov dword [ebp - 0x14], eax
cmp eax, dword [ebp - 0x28]
jb 0x10016120
mov ecx, dword [ebp - 0xc]
mov esi, dword [ebp - 4]
mov eax, dword [ebp - 0x24]
cmp byte [eax + 0x70], 0
jbe 0x10016255
mov edx, dword [ebp - 0x18]
push ecx
push esi
mov ecx, eax
call fcn.10013e60
add esp, 8
test eax, eax
jne 0x100163e0
mov eax, dword [ebp - 0x84]
xor edx, edx
dec eax
add eax, ebx
div ebx
mov edx, dword [ebp - 0x24]
cmp dword [edx + 0xc], 7
mov dword [edx + 0x80bc], eax
jne case.default.0x1001628c
cmp dword [edx + 0x5c], 0
jne case.default.0x1001628c
mov eax, dword [edx + 0x10]
dec eax
cmp eax, 6
ja case.default.0x1001628c
jmp dword [eax*4 + 0x100164a0]
mov esi, dword [ebp - 0x34]
cmp esi, dword [ebp - 0x28]
jae case.default.0x1001628c
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x20]
mov edx, eax
mov eax, esi
mov esi, dword [ebp - 0x5c]
shr eax, cl
mov esi, dword [esi + eax*4]
mov eax, dword [ebp - 0x20]
cmp eax, edi
jae 0x100162eb
mov ebx, dword [ebp - 0x80]
mov eax, edx
shr eax, cl
mov ecx, dword [ebp - 0x60]
mov ecx, dword [ecx + eax*4]
mov eax, dword [ebp - 0x24]
add ecx, dword [eax + 0x80a8]
mov eax, dword [ebp - 0x7c]
add ecx, esi
mov al, byte [ecx + eax]
mov byte [ecx + 1], al
mov byte [ecx + ebx], al
mov ebx, dword [ebp - 0x50]
add edx, ebx
mov ecx, dword [ebp - 0x18]
cmp edx, edi
jb 0x100162b8
mov eax, dword [ebp - 0x20]
mov esi, dword [ebp - 0x34]
add esi, ebx
mov dword [ebp - 0x34], esi
cmp esi, dword [ebp - 0x28]
jb 0x100162a5
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
mov esi, dword [ebp - 0x34]
cmp esi, dword [ebp - 0x28]
jae case.default.0x1001628c
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x20]
mov edx, eax
mov eax, esi
mov esi, dword [ebp - 0x5c]
shr eax, cl
mov esi, dword [esi + eax*4]
mov eax, dword [ebp - 0x20]
cmp eax, edi
jae 0x1001635c
mov ebx, dword [ebp - 0x80]
mov eax, edx
shr eax, cl
mov ecx, dword [ebp - 0x60]
mov ecx, dword [ecx + eax*4]
mov eax, dword [ebp - 0x24]
add ecx, dword [eax + 0x80a8]
mov eax, dword [ebp - 0x7c]
add ecx, esi
movzx eax, word [ecx + eax*2]
mov word [ecx + 2], ax
mov word [ecx + ebx*2], ax
mov ebx, dword [ebp - 0x50]
add edx, ebx
mov ecx, dword [ebp - 0x18]
cmp edx, edi
jb 0x10016326
mov eax, dword [ebp - 0x20]
mov esi, dword [ebp - 0x34]
add esi, ebx
mov dword [ebp - 0x34], esi
cmp esi, dword [ebp - 0x28]
jb 0x10016313
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
mov esi, dword [ebp - 0x34]
cmp esi, dword [ebp - 0x28]
jae case.default.0x1001628c
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x20]
mov edx, eax
mov eax, esi
mov esi, dword [ebp - 0x5c]
shr eax, cl
mov esi, dword [esi + eax*4]
mov eax, dword [ebp - 0x20]
cmp eax, edi
jae 0x100163ca
mov ebx, dword [ebp - 0x80]
mov eax, edx
shr eax, cl
mov ecx, dword [ebp - 0x60]
mov ecx, dword [ecx + eax*4]
mov eax, dword [ebp - 0x24]
add ecx, dword [eax + 0x80a8]
mov eax, dword [ebp - 0x7c]
add ecx, esi
mov eax, dword [ecx + eax*4]
mov dword [ecx + 4], eax
mov dword [ecx + ebx*4], eax
mov ebx, dword [ebp - 0x50]
add edx, ebx
mov ecx, dword [ebp - 0x18]
cmp edx, edi
jb 0x10016397
mov eax, dword [ebp - 0x20]
mov esi, dword [ebp - 0x34]
add esi, ebx
mov dword [ebp - 0x34], esi
cmp esi, dword [ebp - 0x28]
jb 0x10016384
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
pop edi
pop esi
or eax, 0xffffffff
pop ebx
mov esp, ebp
pop ebp
ret