Function at 0x6c9a6810
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x84
mov eax, dword [esp + 0x98]
mov edi, dword [esp + 0xa4]
mov eax, dword [eax + 8]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0xa0]
test byte [eax], 2
jne 0x6c9a6a10
mov esi, dword [esp + 0x98]
mov eax, dword [esp + 0xa0]
mov esi, dword [esi + 4]
mov eax, dword [eax + 0x10]
movzx edx, byte [esi + 9]
mov dword [esp + 0x48], eax
imul eax, dword [edi + 4]
mov ebx, edx
imul edx, dword [edi]
add edx, eax
mov eax, dword [esp + 0xa0]
add edx, dword [eax + 0x14]
mov eax, dword [esp + 0x98]
mov dword [esp + 0x38], edx
mov ebp, dword [eax + 0x34]
mov eax, dword [esp + 0x9c]
mov edx, dword [eax + 4]
mov edi, dword [ebp + 0xc]
test edx, edx
je 0x6c9a68f5
cmp bl, 2
je 0x6c9a6989
mov eax, 0
jbe 0x6c9a69c0
cmp bl, 3
je 0x6c9a6c10
cmp bl, 4
jne 0x6c9a68f5
movzx ecx, word [edi]
add edi, 4
add eax, ecx
movzx ecx, word [edi - 2]
test ecx, ecx
je 0x6c9a68e3
lea edi, [edi + ecx*4]
add eax, ecx
cmp eax, dword [esp + 0x10]
jne 0x6c9a68b1
sub edx, 1
je 0x6c9a68f5
movzx ecx, word [edi]
xor eax, eax
add edi, 4
add eax, ecx
movzx ecx, word [edi - 2]
test ecx, ecx
jne 0x6c9a68c1
test eax, eax
jne 0x6c9a68c6
jmp 0x6c9a6960
movzx ebx, byte [esp + 0xc]
movzx eax, byte [ebp + 0x4f]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x9c]
mov eax, dword [eax]
mov dword [esp + 0x50], eax
test eax, eax
jne 0x6c9a6928
mov ecx, dword [esp + 0x98]
mov eax, dword [esp + 0x9c]
mov ecx, dword [ecx + 8]
cmp dword [eax + 8], ecx
je 0x6c9a6b22
mov eax, dword [esp + 0xa0]
cmp dword [esp + 0xc], 0xff
mov esi, dword [eax + 4]
movzx eax, byte [esi + 9]
je 0x6c9a6a45
cmp al, 3
je 0x6c9a6d20
cmp al, 4
je 0x6c9a72a0
cmp al, 2
je 0x6c9a6ff0
lea esi, [esi]
mov eax, dword [esp + 0xa0]
xor ebx, ebx
test byte [eax], 2
jne 0x6c9a6a30
add esp, 0x84
mov eax, ebx
pop ebx
pop esi
pop edi
pop ebp
ret
sub edx, 1
je 0x6c9a68f5
movzx ecx, byte [edi]
xor eax, eax
add edi, 2
add eax, ecx
movzx ecx, byte [edi - 1]
test ecx, ecx
je 0x6c9a69b6
lea edi, [edi + ecx*2]
add eax, ecx
cmp eax, dword [esp + 0x10]
je 0x6c9a6980
movzx ecx, byte [edi]
add edi, 2
add eax, ecx
movzx ecx, byte [edi - 1]
test ecx, ecx
jne 0x6c9a699b
test eax, eax
jne 0x6c9a69a0
jmp 0x6c9a6960
cmp bl, 1
jne 0x6c9a68f5
lea esi, [esi]
movzx ecx, byte [edi]
add edi, 2
add eax, ecx
movzx ecx, byte [edi - 1]
test ecx, ecx
je 0x6c9a6a05
add edi, ecx
add eax, ecx
cmp eax, dword [esp + 0x10]
jne 0x6c9a69d0
sub edx, 1
je 0x6c9a68f5
movzx ecx, byte [edi]
xor eax, eax
add edi, 2
add eax, ecx
movzx ecx, byte [edi - 1]
test ecx, ecx
jne 0x6c9a69e0
test eax, eax
jne 0x6c9a69e4
jmp 0x6c9a6960
mov dword [esp], eax
call fcn.6c9e0170
test eax, eax
jns 0x6c9a683f
mov ebx, 0xffffffff
jmp 0x6c9a6972
mov dword [esp], eax
call fcn.6c9e01c0
add esp, 0x84
mov eax, ebx
pop ebx
pop esi
pop edi
pop ebp
ret
cmp al, 2
je 0x6c9a7ba1
jbe 0x6c9a6c55
cmp al, 3
je 0x6c9a7ac0
cmp al, 4
jne 0x6c9a6960
mov eax, dword [esp + 0x9c]
mov ebp, dword [esp + 0x38]
mov eax, dword [eax + 0xc]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x9c]
mov eax, dword [eax + 8]
mov ebx, eax
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x50]
mov esi, eax
shl eax, 2
add esi, ebx
mov dword [esp + 0x20], eax
sub ebp, eax
mov dword [esp + 0xc], esi
lea esi, [esi]
xor ebx, ebx
movzx eax, word [edi]
movzx esi, word [edi + 2]
add edi, 4
add ebx, eax
test esi, esi
je 0x6c9a6c00
mov eax, dword [esp + 0xc]
cmp eax, ebx
jle 0x6c9a6b01
mov edx, dword [esp + 0x50]
sub edx, ebx
test edx, edx
jle 0x6c9a7520
mov eax, esi
sub eax, edx
test eax, eax
jle 0x6c9a6b01
lea ecx, [edi + edx*4]
mov edx, dword [esp + 0x20]
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x1c]
cmp eax, edx
mov dword [esp + 4], ecx
cmovg eax, edx
shl eax, 2
mov dword [esp + 8], eax
mov eax, dword [esp + 0x14]
add eax, ebp
mov dword [esp], eax
call fcn.6c9a2290
lea edi, [edi + esi*4]
add ebx, esi
cmp dword [esp + 0x10], ebx
jne 0x6c9a6aa2
mov eax, dword [esp + 0xa0]
add ebp, dword [eax + 0x10]
sub dword [esp + 0x18], 1
jne 0x6c9a6aa0
jmp 0x6c9a6960
cmp dword [esp + 0xc], 0xff
je 0x6c9a7580
cmp bl, 3
je 0x6c9a7dc0
cmp bl, 4
je 0x6c9a7fe0
cmp bl, 2
jne 0x6c9a6960
mov ebx, dword [esi + 0xc]
mov ecx, dword [esi + 0x10]
mov edx, eax
mov ebp, dword [esi + 0x14]
mov edx, dword [edx + 0xc]
mov eax, ebx
mov dword [esp + 0x34], ebx
or eax, ecx
mov dword [esp + 0x3c], ecx
or eax, ebp
mov dword [esp + 0x40], ebp
mov dword [esp + 0x68], edx
cmp eax, 0x7fff
je 0x6c9a8784
cmp eax, 0xffff
jne 0x6c9a82c4
cmp ecx, 0x7e0
sete dl
cmp ebx, 0x7e0
sete al
or dl, al
jne 0x6c9a6ba7
cmp ebp, 0x7e0
jne 0x6c9a82c4
cmp dword [esp + 0xc], 0x80
je 0x6c9a793e
mov eax, dword [esp + 0xc]
shr eax, 3
mov dword [esp + 0x1c], eax
xor esi, esi
movzx eax, byte [edi]
movzx ebx, byte [edi + 1]
add edi, 2
add esi, eax
mov dword [esp + 0xc], ebx
mov eax, ebx
test ebx, ebx
jne 0x6c9a8210
test esi, esi
je 0x6c9a6960
cmp esi, dword [esp + 0x10]
jne 0x6c9a6bc2
mov esi, dword [esp + 0x48]
add dword [esp + 0x38], esi
sub dword [esp + 0x68], 1
jne 0x6c9a6bc0
jmp 0x6c9a6960
test ebx, ebx
jne 0x6c9a6b06
jmp 0x6c9a6960
mov byte [esp + 0xc], bl
movzx ecx, byte [edi]
add edi, 2
add eax, ecx
movzx ecx, byte [edi - 1]
test ecx, ecx
je 0x6c9a6c4c
lea ebx, [ecx + ecx*2]
add eax, ecx
add edi, ebx
cmp eax, dword [esp + 0x10]
jne 0x6c9a6c14
sub edx, 1
je 0x6c9a68f0
movzx ecx, byte [edi]
xor eax, eax
add edi, 2
add eax, ecx
movzx ecx, byte [edi - 1]
test ecx, ecx
jne 0x6c9a6c24
test eax, eax
jne 0x6c9a6c2b
jmp 0x6c9a6960
cmp al, 1
jne 0x6c9a6960
mov eax, dword [esp + 0x9c]
mov ebp, dword [esp + 0x38]
mov eax, dword [eax + 0xc]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x9c]
mov eax, dword [eax + 8]
mov ebx, eax
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x50]
mov esi, eax
sub ebp, eax
add esi, ebx
mov dword [esp + 0xc], esi
lea esi, [esi]
xor ebx, ebx
movzx eax, byte [edi]
movzx esi, byte [edi + 1]
add edi, 2
add ebx, eax
test esi, esi
je 0x6c9a6d10
mov eax, dword [esp + 0xc]
cmp eax, ebx
jle 0x6c9a6ce9
mov edx, dword [esp + 0x50]
sub edx, ebx
test edx, edx
jle 0x6c9a7540
mov eax, esi
sub eax, edx
test eax, eax
jle 0x6c9a6ce9
mov ecx, dword [esp + 0x50]
add edx, edi
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x1c]
cmp eax, ecx
mov dword [esp + 4], edx
cmovg eax, ecx
mov dword [esp + 8], eax
mov eax, dword [esp + 0x14]
add eax, ebp
mov dword [esp], eax
call fcn.6c9a2290
add edi, esi
add ebx, esi
cmp dword [esp + 0x10], ebx
jne 0x6c9a6c92
mov eax, dword [esp + 0xa0]
add ebp, dword [eax + 0x10]
sub dword [esp + 0x18], 1
jne 0x6c9a6c90
jmp 0x6c9a6960
test ebx, ebx
jne 0x6c9a6ced
jmp 0x6c9a6960
mov eax, dword [esp + 0x9c]
mov dword [esp + 0x14], 0
mov dword [esp + 0x40], edi
mov eax, dword [eax + 0xc]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x9c]
mov eax, dword [eax + 8]
mov ecx, eax
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x50]
mov ebx, eax
lea eax, [eax + eax*2]
add ebx, ecx
mov dword [esp + 0x6c], eax
mov dword [esp + 0x5c], ebx
mov ebx, dword [esp + 0x38]
sub ebx, eax
mov dword [esp + 0x60], ebx
lea esi, [esi]
nop
mov edi, dword [esp + 0x40]
movzx ebx, byte [edi + 1]
movzx eax, byte [edi]
add edi, 2
add dword [esp + 0x14], eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0x54], ebx
mov dword [esp + 0x40], edi
test ebx, ebx
je 0x6c9a6fb4
cmp dword [esp + 0x5c], eax
jle 0x6c9a6f71
mov eax, dword [esp + 0x50]
sub eax, dword [esp + 0x14]
test eax, eax
jle 0x6c9a6fc1
mov edx, ebx
sub edx, eax
test edx, edx
jle 0x6c9a6f71
mov edi, dword [esp + 0x68]
mov ebx, edx
lea eax, [eax + eax*2]
cmp edi, edx
cmovle ebx, edi
add eax, dword [esp + 0x40]
mov edi, dword [esp + 0x60]
mov dword [esp + 0x24], eax
add edi, dword [esp + 0x6c]
mov dword [esp + 0x58], ebx
test ebx, ebx
jle 0x6c9a6f71
mov dword [esp + 0x28], 0
mov ebp, edi
mov edi, dword [esp + 0x24]
movzx ebx, byte [esi + 0x1d]
movzx ecx, byte [esi + 0x20]
movzx edx, byte [edi + 2]
mov dword [esp + 0x48], ebx
mov dword [esp + 0x2c], ecx
mov eax, edx
movzx edx, byte [edi + 1]
shl eax, 0x10
shl edx, 8
or edx, eax
movzx eax, byte [edi]
or edx, eax
mov dword [esp + 0x18], edx
movzx edx, byte [ebp + 2]
mov eax, edx
movzx edx, byte [ebp + 1]
shl eax, 0x10
shl edx, 8
or edx, eax
movzx eax, byte [ebp]
or edx, eax
movzx eax, byte [esi + 0x1c]
mov edi, dword [eax*4 + 0x6ca14140]
mov dword [esp + 0x44], eax
mov eax, dword [ebx*4 + 0x6ca14140]
movzx ebx, byte [esi + 0x1e]
mov dword [esp + 0x30], eax
movzx eax, byte [esi + 0x21]
mov dword [esp + 0x4c], ebx
mov dword [esp + 0x1c], eax
mov eax, dword [ebx*4 + 0x6ca14140]
mov dword [esp + 0x34], eax
movzx eax, byte [esi + 0x22]
mov dword [esp + 0x20], eax
mov eax, dword [esi + 0xc]
and eax, edx
shr eax, cl
mov ecx, dword [esi + 0x10]
movzx eax, byte [edi + eax]
and ecx, edx
mov ebx, ecx
movzx ecx, byte [esp + 0x1c]
shr ebx, cl
mov ecx, dword [esp + 0x30]
movzx ecx, byte [ecx + ebx]
mov dword [esp + 0x38], ecx
and edx, dword [esi + 0x14]
movzx ecx, byte [esp + 0x20]
mov ebx, dword [esp + 0x18]
shr edx, cl
mov ecx, dword [esp + 0x34]
movzx edx, byte [ecx + edx]
movzx ecx, byte [esp + 0x2c]
mov dword [esp + 0x3c], edx
mov edx, dword [esi + 0xc]
and edx, ebx
shr edx, cl
movzx ecx, byte [esp + 0x1c]
movzx edi, byte [edi + edx]
mov edx, dword [esi + 0x10]
and edx, ebx
sub edi, eax
shr edx, cl
mov ecx, dword [esp + 0x30]
imul edi, dword [esp + 0xc]
movzx ebx, byte [ecx + edx]
movzx ecx, byte [esp + 0x20]
mov edx, dword [esp + 0x18]
and edx, dword [esi + 0x14]
shr edi, 8
shr edx, cl
mov ecx, dword [esp + 0x34]
add eax, edi
sub ebx, dword [esp + 0x38]
imul ebx, dword [esp + 0xc]
movzx edx, byte [ecx + edx]
movzx ecx, byte [esp + 0x44]
sub edx, dword [esp + 0x3c]
imul edx, dword [esp + 0xc]
shr eax, cl
movzx ecx, byte [esp + 0x2c]
shr ebx, 8
shl eax, cl
movzx ecx, byte [esp + 0x48]
shr edx, 8
add ebx, dword [esp + 0x38]
add edx, dword [esp + 0x3c]
add ebp, 3
shr ebx, cl
movzx ecx, byte [esp + 0x1c]
shl ebx, cl
movzx ecx, byte [esp + 0x4c]
or eax, ebx
or eax, dword [esi + 0x18]
shr edx, cl
movzx ecx, byte [esp + 0x20]
shl edx, cl
or eax, edx
mov byte [ebp - 3], al
mov byte [ebp - 2], ah
shr eax, 0x10
mov byte [ebp - 1], al
add dword [esp + 0x28], 1
mov eax, dword [esp + 0x28]
add dword [esp + 0x24], 3
cmp eax, dword [esp + 0x58]
jl 0x6c9a6df0
mov edi, dword [esp + 0x54]
add dword [esp + 0x14], edi
lea eax, [edi + edi*2]
add dword [esp + 0x40], eax
mov edi, dword [esp + 0x14]
cmp dword [esp + 0x10], edi
jne 0x6c9a6d70
mov edi, dword [esp + 0xa0]
mov edi, dword [edi + 0x10]
add dword [esp + 0x60], edi
sub dword [esp + 0x64], 1
je 0x6c9a6960
mov dword [esp + 0x14], 0
jmp 0x6c9a6d70
mov ebp, dword [esp + 0x14]
test ebp, ebp
jne 0x6c9a6f80
jmp 0x6c9a6960
mov edi, dword [esp + 0x14]
mov eax, dword [esp + 0x5c]
sub eax, edi
cmp eax, ebx
cmovg eax, ebx
mov dword [esp + 0x58], eax
lea eax, [edi + edi*2]
mov edi, dword [esp + 0x60]
add edi, eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x24], eax
jmp 0x6c9a6de6
mov ebx, dword [esi + 0xc]
mov edx, dword [esi + 0x10]
mov ecx, dword [esp + 0x9c]
mov ebp, dword [esi + 0x14]
mov eax, ebx
mov dword [esp + 0x2c], edx
or eax, edx
mov edx, dword [esp + 0x9c]
mov ecx, dword [ecx + 8]
mov dword [esp + 0x34], ebp
or eax, ebp
mov dword [esp + 0x68], ebx
mov edx, dword [edx + 0xc]
mov dword [esp + 0x78], ecx
mov ecx, dword [esp + 0x50]
mov dword [esp + 0x74], edx
mov edx, dword [esp + 0x38]
lea ebp, [ecx + ecx]
add ecx, dword [esp + 0x78]
sub edx, ebp
mov dword [esp + 0x7c], ebp
mov dword [esp + 0x70], edx
mov dword [esp + 0x6c], ecx
cmp eax, 0x7fff
je 0x6c9a7c81
cmp eax, 0xffff
je 0x6c9a7660
xor ebp, ebp
mov dword [esp + 0x28], edi
mov dword [esp + 0x80], esi
mov dword [esp + 0x14], ebp
lea esi, [esi]
nop
mov esi, dword [esp + 0x28]
movzx edi, byte [esi + 1]
movzx eax, byte [esi]
add esi, 2
add dword [esp + 0x14], eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0x44], edi
mov dword [esp + 0x28], esi
test edi, edi
je 0x6c9a7290
mov esi, dword [esp + 0x6c]
cmp eax, esi
jge 0x6c9a724d
mov eax, dword [esp + 0x50]
sub eax, dword [esp + 0x14]
test eax, eax
jle 0x6c9a7630
mov edx, edi
sub edx, eax
test edx, edx
jle 0x6c9a724d
mov edi, dword [esp + 0x78]
mov esi, edx
cmp edx, edi
cmovg esi, edi
mov edi, dword [esp + 0x28]
lea eax, [edi + eax*2]
mov dword [esp + 0x4c], esi
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x70]
add eax, dword [esp + 0x7c]
mov dword [esp + 0x30], eax
test esi, esi
jle 0x6c9a724d
mov eax, dword [esp + 0x80]
xor ebp, ebp
movzx esi, byte [eax + 0x1c]
mov dword [esp + 0x58], esi
mov esi, dword [esi*4 + 0x6ca14140]
mov dword [esp + 0x38], esi
movzx esi, byte [eax + 0x20]
mov dword [esp + 0x18], esi
movzx esi, byte [eax + 0x1d]
mov dword [esp + 0x5c], esi
mov esi, dword [esi*4 + 0x6ca14140]
mov dword [esp + 0x3c], esi
movzx esi, byte [eax + 0x21]
mov dword [esp + 0x1c], esi
movzx esi, byte [eax + 0x1e]
mov dword [esp + 0x60], esi
mov esi, dword [esi*4 + 0x6ca14140]
mov dword [esp + 0x40], esi
movzx esi, byte [eax + 0x22]
mov eax, dword [eax + 0x18]
mov dword [esp + 0x20], esi
mov dword [esp + 0x64], eax
lea esi, [esi]
mov eax, dword [esp + 0x54]
mov edi, dword [esp + 0x68]
movzx ecx, byte [esp + 0x18]
mov edx, dword [esp + 0x2c]
movzx ebx, word [eax + ebp*2]
mov eax, dword [esp + 0x30]
movzx esi, word [eax + ebp*2]
mov eax, edi
and eax, esi
and edx, esi
and esi, dword [esp + 0x34]
shr eax, cl
mov ecx, dword [esp + 0x38]
movzx eax, byte [ecx + eax]
movzx ecx, byte [esp + 0x1c]
shr edx, cl
mov ecx, dword [esp + 0x3c]
movzx edx, byte [ecx + edx]
movzx ecx, byte [esp + 0x20]
shr esi, cl
mov ecx, dword [esp + 0x40]
movzx esi, byte [ecx + esi]
movzx ecx, byte [esp + 0x18]
mov dword [esp + 0x24], esi
mov esi, edi
and esi, ebx
shr esi, cl
mov ecx, dword [esp + 0x38]
movzx edi, byte [ecx + esi]
mov esi, dword [esp + 0x2c]
movzx ecx, byte [esp + 0x1c]
and esi, ebx
sub edi, eax
and ebx, dword [esp + 0x34]
shr esi, cl
mov ecx, dword [esp + 0x3c]
imul edi, dword [esp + 0xc]
movzx esi, byte [ecx + esi]
movzx ecx, byte [esp + 0x20]
shr edi, 8
shr ebx, cl
mov ecx, dword [esp + 0x40]
sub esi, edx
add eax, edi
imul esi, dword [esp + 0xc]
movzx ebx, byte [ecx + ebx]
sub ebx, dword [esp + 0x24]
imul ebx, dword [esp + 0xc]
movzx ecx, byte [esp + 0x58]
shr esi, 8
shr eax, cl
movzx ecx, byte [esp + 0x18]
add edx, esi
mov esi, dword [esp + 0x30]
shr ebx, 8
add ebx, dword [esp + 0x24]
shl eax, cl
movzx ecx, byte [esp + 0x5c]
shr edx, cl
movzx ecx, byte [esp + 0x1c]
shl edx, cl
movzx ecx, byte [esp + 0x60]
or eax, edx
or eax, dword [esp + 0x64]
shr ebx, cl
movzx ecx, byte [esp + 0x20]
shl ebx, cl
or eax, ebx
mov word [esi + ebp*2], ax
add ebp, 1
cmp ebp, dword [esp + 0x4c]
jl 0x6c9a7150
mov esi, dword [esp + 0x28]
mov eax, dword [esp + 0x44]
add dword [esp + 0x14], eax
lea esi, [esi + eax*2]
mov dword [esp + 0x28], esi
mov esi, dword [esp + 0x14]
cmp dword [esp + 0x10], esi
jne 0x6c9a7070
mov esi, dword [esp + 0x48]
add dword [esp + 0x70], esi
sub dword [esp + 0x74], 1
je 0x6c9a6960
mov dword [esp + 0x14], 0
jmp 0x6c9a7070
mov eax, dword [esp + 0x14]
test eax, eax
jne 0x6c9a7260
jmp 0x6c9a6960
mov edx, dword [esi + 0xc]
mov eax, dword [esi + 0x10]
mov dword [esp + 0x14], 0
mov ecx, dword [esp + 0x9c]
mov ebp, dword [esp + 0x9c]
mov ebx, dword [esi + 0x14]
mov ecx, dword [ecx + 8]
mov ebp, dword [ebp + 0xc]
mov dword [esp + 0x64], ecx
mov ecx, dword [esp + 0x50]
mov dword [esp + 0x5c], ebp
mov ebp, dword [esp + 0x64]
add ebp, ecx
shl ecx, 2
mov dword [esp + 0x54], ebp
mov ebp, dword [esp + 0x38]
mov dword [esp + 0x68], ecx
sub ebp, ecx
mov ecx, edx
or ecx, eax
mov dword [esp + 0x58], ebp
or ecx, ebx
cmp ecx, 0xffffff
je 0x6c9a7790
mov edx, edi
movzx edi, word [edx + 2]
movzx eax, word [edx]
add edx, 4
add dword [esp + 0x14], eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0x44], edi
test edi, edi
je 0x6c9a7510
mov edi, dword [esp + 0x54]
cmp eax, edi
jge 0x6c9a74c9
mov eax, dword [esp + 0x50]
sub eax, dword [esp + 0x14]
test eax, eax
jle 0x6c9a7551
mov ecx, dword [esp + 0x44]
sub ecx, eax
test ecx, ecx
jle 0x6c9a74c9
mov ebx, dword [esp + 0x64]
mov edi, ecx
lea eax, [edx + eax*4]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x58]
cmp ecx, ebx
cmovg edi, ebx
add eax, dword [esp + 0x68]
mov dword [esp + 0x38], eax
mov dword [esp + 0x48], edi
test edi, edi
jle 0x6c9a74c9
mov dword [esp + 0x60], edx
xor eax, eax
lea esi, [esi]
nop
movzx edx, byte [esi + 0x1d]
mov edi, dword [esp + 0x4c]
movzx ecx, byte [esi + 0x1c]
mov ebp, dword [edx*4 + 0x6ca14140]
mov ebx, dword [edi + eax*4]
mov dword [esp + 0x40], edx
movzx edx, byte [esi + 0x21]
mov edi, dword [esp + 0x38]
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x18], ebx
mov dword [esp + 0x1c], edx
movzx edx, byte [esi + 0x22]
mov ebx, dword [edi + eax*4]
mov edi, dword [ecx*4 + 0x6ca14140]
mov dword [esp + 0x28], ebp
movzx ecx, byte [esi + 0x20]
movzx ebp, byte [esi + 0x1e]
mov dword [esp + 0x20], edx
mov edx, dword [esi + 0xc]
mov dword [esp + 0x24], ecx
and edx, ebx
shr edx, cl
movzx ecx, byte [edi + edx]
mov edx, dword [esi + 0x10]
mov dword [esp + 0x2c], ecx
movzx ecx, byte [esp + 0x1c]
and edx, ebx
and ebx, dword [esi + 0x14]
shr edx, cl
mov ecx, dword [esp + 0x28]
movzx edx, byte [ecx + edx]
movzx ecx, byte [esp + 0x20]
mov dword [esp + 0x30], edx
mov edx, ebx
mov ebx, dword [ebp*4 + 0x6ca14140]
shr edx, cl
movzx ebx, byte [ebx + edx]
mov dword [esp + 0x34], ebx
mov ebx, dword [esp + 0x18]
mov edx, dword [esi + 0xc]
movzx ecx, byte [esp + 0x24]
and edx, ebx
shr edx, cl
movzx ecx, byte [esp + 0x1c]
movzx edi, byte [edi + edx]
mov edx, dword [esi + 0x10]
sub edi, dword [esp + 0x2c]
imul edi, dword [esp + 0xc]
and edx, ebx
mov ebx, dword [esp + 0x28]
shr edx, cl
movzx ecx, byte [esp + 0x20]
movzx ebx, byte [ebx + edx]
mov edx, dword [esp + 0x18]
shr edi, 8
and edx, dword [esi + 0x14]
add edi, dword [esp + 0x2c]
shr edx, cl
mov ecx, dword [ebp*4 + 0x6ca14140]
sub ebx, dword [esp + 0x30]
imul ebx, dword [esp + 0xc]
movzx edx, byte [ecx + edx]
movzx ecx, byte [esp + 0x3c]
sub edx, dword [esp + 0x34]
imul edx, dword [esp + 0xc]
shr edi, cl
movzx ecx, byte [esp + 0x24]
shr ebx, 8
add ebx, dword [esp + 0x30]
shl edi, cl
movzx ecx, byte [esp + 0x40]
shr edx, 8
add edx, dword [esp + 0x34]
shr ebx, cl
movzx ecx, byte [esp + 0x1c]
shl ebx, cl
mov ecx, ebp
shr edx, cl
movzx ecx, byte [esp + 0x20]
or edi, ebx
mov ebx, dword [esp + 0x38]
or edi, dword [esi + 0x18]
shl edx, cl
or edi, edx
mov dword [ebx + eax*4], edi
add eax, 1
cmp eax, dword [esp + 0x48]
jl 0x6c9a7380
mov edx, dword [esp + 0x60]
mov eax, dword [esp + 0x44]
add dword [esp + 0x14], eax
lea edx, [edx + eax*4]
mov edi, dword [esp + 0x14]
cmp dword [esp + 0x10], edi
jne 0x6c9a7300
mov edi, dword [esp + 0xa0]
mov edi, dword [edi + 0x10]
add dword [esp + 0x58], edi
sub dword [esp + 0x5c], 1
je 0x6c9a6960
mov dword [esp + 0x14], 0
jmp 0x6c9a7300
mov edi, dword [esp + 0x14]
test edi, edi
jne 0x6c9a74d4
jmp 0x6c9a6960
sub eax, ebx
mov ecx, edi
mov edx, eax
lea eax, [ebx*4]
mov dword [esp + 0x14], eax
mov eax, esi
jmp 0x6c9a6ae3
sub eax, ebx
mov dword [esp + 0x14], ebx
mov edx, edi
mov ecx, eax
mov eax, esi
jmp 0x6c9a6cce
mov eax, edi
mov edi, dword [esp + 0x14]
mov ebx, dword [esp + 0x44]
mov dword [esp + 0x4c], edx
sub eax, edi
cmp eax, ebx
cmovg eax, ebx
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x58]
lea eax, [eax + edi*4]
mov dword [esp + 0x38], eax
jmp 0x6c9a7372
cmp bl, 2
je 0x6c9a79ba
jbe 0x6c9a75e2
cmp bl, 3
je 0x6c9a78c0
cmp bl, 4
jne 0x6c9a6960
mov eax, dword [eax + 0xc]
mov dword [esp + 0xc], eax
xor ebx, ebx
movzx eax, word [edi]
movzx esi, word [edi + 2]
add edi, 4
add ebx, eax
test esi, esi
jne 0x6c9a7a90
test ebx, ebx
je 0x6c9a6960
cmp ebx, dword [esp + 0x10]
jne 0x6c9a75a6
mov esi, dword [esp + 0xa0]
mov esi, dword [esi + 0x10]
add dword [esp + 0x38], esi
sub dword [esp + 0xc], 1
jne 0x6c9a75a4
jmp 0x6c9a6960
cmp bl, 1
jne 0x6c9a6960
mov ebx, dword [eax + 0xc]
nop
xor esi, esi
movzx eax, byte [edi]
movzx ebp, byte [edi + 1]
add edi, 2
add esi, eax
test ebp, ebp
jne 0x6c9a7a20
test esi, esi
je 0x6c9a6960
cmp esi, dword [esp + 0x10]
jne 0x6c9a75f2
mov esi, dword [esp + 0xa0]
mov esi, dword [esi + 0x10]
add dword [esp + 0x38], esi
sub ebx, 1
jne 0x6c9a75f0
jmp 0x6c9a6960
mov eax, esi
mov esi, dword [esp + 0x14]
sub eax, esi
cmp eax, edi
cmovg eax, edi
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x70]
lea eax, [eax + esi*2]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x54], eax
jmp 0x6c9a70ec
cmp dword [esp + 0x2c], 0x7e0
sete dl
cmp ebx, 0x7e0
sete al
or dl, al
jne 0x6c9a7686
cmp dword [esp + 0x34], 0x7e0
jne 0x6c9a705a
cmp dword [esp + 0xc], 0x80
je 0x6c9a8c64
mov eax, dword [esp + 0xc]
shr eax, 3
mov dword [esp + 0xc], eax
nop
xor esi, esi
movzx eax, byte [edi]
movzx ebx, byte [edi + 1]
add edi, 2
add esi, eax
test ebx, ebx
je 0x6c9a7a00
cmp esi, dword [esp + 0x6c]
jge 0x6c9a7761
mov eax, dword [esp + 0x50]
sub eax, esi
test eax, eax
jle 0x6c9a82a9
mov edx, ebx
sub edx, eax
test edx, edx
jle 0x6c9a7761
mov ebp, dword [esp + 0x78]
mov ecx, edx
lea eax, [edi + eax*2]
cmp edx, ebp
cmovg ecx, ebp
mov ebp, eax
mov eax, dword [esp + 0x70]
add eax, dword [esp + 0x7c]
test ecx, ecx
jle 0x6c9a7761
mov dword [esp + 0x14], edi
xor edx, edx
mov edi, ebp
mov dword [esp + 0x18], ebx
mov ebx, eax
mov dword [esp + 0x1c], esi
mov esi, ecx
lea esi, [esi]
movzx eax, word [edi + edx*2]
movzx ecx, word [ebx + edx*2]
mov ebp, eax
shl ebp, 0x10
or eax, ebp
mov ebp, ecx
shl ebp, 0x10
and eax, 0x7e0f81f
or ebp, ecx
and ebp, 0x7e0f81f
sub eax, ebp
imul eax, dword [esp + 0xc]
shr eax, 5
add ebp, eax
and ebp, 0x7e0f81f
mov eax, ebp
shr eax, 0x10
or ebp, eax
mov word [ebx + edx*2], bp
add edx, 1
cmp edx, esi
jl 0x6c9a7710
mov edi, dword [esp + 0x14]
mov ebx, dword [esp + 0x18]
mov esi, dword [esp + 0x1c]
lea edi, [edi + ebx*2]
add esi, ebx
cmp dword [esp + 0x10], esi
jne 0x6c9a76a2
mov esi, dword [esp + 0x48]
add dword [esp + 0x70], esi
sub dword [esp + 0x74], 1
jne 0x6c9a76a0
jmp 0x6c9a6960
cmp edx, 0xff00
sete dl
cmp eax, 0xff00
sete al
or dl, al
jne 0x6c9a77b1
cmp ebx, 0xff00
jne 0x6c9a72fe
xor ebp, ebp
cmp dword [esp + 0xc], 0x80
mov esi, edi
je 0x6c9a8eb5
movzx eax, word [esi]
add esi, 4
add ebp, eax
movzx eax, word [esi - 2]
mov dword [esp + 0x14], eax
test eax, eax
je 0x6c9a7a10
cmp ebp, dword [esp + 0x54]
jge 0x6c9a788c
mov eax, dword [esp + 0x50]
sub eax, ebp
test eax, eax
jle 0x6c9a84c2
mov edx, dword [esp + 0x14]
sub edx, eax
test edx, edx
jle 0x6c9a788c
mov edi, dword [esp + 0x64]
mov ebx, edx
lea eax, [esi + eax*4]
cmp edx, edi
mov edx, eax
cmovg ebx, edi
mov edi, dword [esp + 0x58]
add edi, dword [esp + 0x68]
mov dword [esp + 0x18], ebx
test ebx, ebx
jle 0x6c9a788c
mov dword [esp + 0x1c], esi
xor ecx, ecx
mov dword [esp + 0x20], ebp
mov ebp, edx
lea esi, [esi]
mov eax, dword [ebp + ecx*4]
mov ebx, dword [edi + ecx*4]
mov edx, eax
mov esi, ebx
and eax, 0xff00
and ebx, 0xff00
and esi, 0xff00ff
and edx, 0xff00ff
sub eax, ebx
sub edx, esi
imul eax, dword [esp + 0xc]
imul edx, dword [esp + 0xc]
shr eax, 8
shr edx, 8
add ebx, eax
add edx, esi
and ebx, 0xff00
and edx, 0xff00ff
or edx, ebx
mov dword [edi + ecx*4], edx
add ecx, 1
cmp ecx, dword [esp + 0x18]
jl 0x6c9a7830
mov esi, dword [esp + 0x1c]
mov ebp, dword [esp + 0x20]
mov eax, dword [esp + 0x14]
lea esi, [esi + eax*4]
add ebp, eax
cmp dword [esp + 0x10], ebp
jne 0x6c9a77c3
mov edi, dword [esp + 0xa0]
mov edi, dword [edi + 0x10]
add dword [esp + 0x58], edi
sub dword [esp + 0x5c], 1
je 0x6c9a6960
xor ebp, ebp
jmp 0x6c9a77c3
mov eax, dword [eax + 0xc]
mov dword [esp + 0xc], eax
lea esi, [esi]
nop
xor ebx, ebx
movzx eax, byte [edi]
movzx esi, byte [edi + 1]
add edi, 2
add ebx, eax
test esi, esi
jne 0x6c9a7a63
test ebx, ebx
je 0x6c9a6960
cmp ebx, dword [esp + 0x10]
jne 0x6c9a78d2
mov esi, dword [esp + 0xa0]
mov esi, dword [esi + 0x10]
add dword [esp + 0x38], esi
sub dword [esp + 0xc], 1
jne 0x6c9a78d0
jmp 0x6c9a6960
mov ebp, dword [esp + 0x18]
mov eax, dword [esp + 0x14]
mov esi, dword [esp + 0xc]
add ebp, eax
lea edi, [esi + eax*2]
cmp ebp, dword [esp + 0x10]
jne 0x6c9a7940
mov esi, dword [esp + 0xa0]
mov esi, dword [esi + 0x10]
add dword [esp + 0x38], esi
sub dword [esp + 0x68], 1
je 0x6c9a6960
xor ebp, ebp
movzx eax, byte [edi]
movzx esi, byte [edi + 1]
lea ebx, [edi + 2]
mov dword [esp + 0xc], ebx
add ebp, eax
mov dword [esp + 0x14], esi
test esi, esi
je 0x6c9a8200
mov eax, dword [esp + 0x38]
lea ecx, [eax + ebp*2]
mov eax, ebx
xor eax, ecx
test al, 3
je 0x6c9a84e3
mov dword [esp + 0x18], ebp
sub esi, 1
lea esi, [esi]
lea esi, [esi]
add ebx, 2
movzx edi, word [ecx]
movzx eax, word [ebx - 2]
add ecx, 2
sub esi, 1
mov edx, eax
mov ebp, edi
and eax, edi
and edx, 0xf7de
and ebp, 0xf7de
and ax, 0x821
add edx, ebp
shr edx, 1
add eax, edx
mov word [ecx - 2], ax
cmp esi, 0xffffffff
jne 0x6c9a7980
jmp 0x6c9a790e
mov eax, dword [eax + 0xc]
mov dword [esp + 0xc], eax
xor ebx, ebx
movzx eax, byte [edi]
movzx esi, byte [edi + 1]
add edi, 2
add ebx, eax
test esi, esi
jne 0x6c9a7a40
test ebx, ebx
je 0x6c9a6960
cmp ebx, dword [esp + 0x10]
jne 0x6c9a79c3
mov esi, dword [esp + 0xa0]
mov esi, dword [esi + 0x10]
add dword [esp + 0x38], esi
sub dword [esp + 0xc], 1
jne 0x6c9a79c1
jmp 0x6c9a6960
test esi, esi
jne 0x6c9a7766
jmp 0x6c9a6960
test ebp, ebp
jne 0x6c9a7895
jmp 0x6c9a6960
mov eax, dword [esp + 0x38]
mov dword [esp + 4], edi
add edi, ebp
mov dword [esp + 8], ebp
add eax, esi
add esi, ebp
mov dword [esp], eax
call fcn.6c9a2290
jmp 0x6c9a760e
mov eax, dword [esp + 0x38]
lea ebp, [esi + esi]
mov dword [esp + 4], edi
mov dword [esp + 8], ebp
add edi, ebp
lea eax, [eax + ebx*2]
add ebx, esi
mov dword [esp], eax
call fcn.6c9a2290
jmp 0x6c9a79db
lea ebp, [esi + esi*2]
lea eax, [ebx + ebx*2]
add eax, dword [esp + 0x38]
mov dword [esp + 4], edi
mov dword [esp + 8], ebp
add edi, ebp
add ebx, esi
mov dword [esp], eax
call fcn.6c9a2290
jmp 0x6c9a78ee
mov eax, dword [esp + 0x38]
lea ebp, [esi*4]
mov dword [esp + 4], edi
mov dword [esp + 8], ebp
add edi, ebp
lea eax, [eax + ebx*4]
add ebx, esi
mov dword [esp], eax
call fcn.6c9a2290
jmp 0x6c9a75c2
mov eax, dword [esp + 0x9c]
mov ebp, dword [esp + 0x38]
mov eax, dword [eax + 0xc]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x9c]
mov eax, dword [eax + 8]
mov ebx, eax
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x50]
mov esi, eax
lea eax, [eax + eax*2]
add esi, ebx
mov dword [esp + 0x20], eax
sub ebp, eax
mov dword [esp + 0xc], esi
lea esi, [esi]
nop
xor ebx, ebx
movzx eax, byte [edi]
movzx esi, byte [edi + 1]
add edi, 2
add ebx, eax
test esi, esi
je 0x6c9a7b80
mov eax, dword [esp + 0xc]
cmp eax, ebx
jle 0x6c9a7b5b
mov edx, dword [esp + 0x50]
sub edx, ebx
test edx, edx
jle 0x6c9a7b90
mov eax, esi
sub eax, edx
test eax, eax
jle 0x6c9a7b5b
mov ecx, dword [esp + 0x20]
lea edx, [edx + edx*2]
add edx, edi
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x1c]
cmp eax, ecx
mov dword [esp + 4], edx
cmovg eax, ecx
lea eax, [eax + eax*2]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x14]
add eax, ebp
mov dword [esp], eax
call fcn.6c9a2290
lea eax, [esi + esi*2]
add ebx, esi
add edi, eax
cmp dword [esp + 0x10], ebx
jne 0x6c9a7b02
mov eax, dword [esp + 0xa0]
add ebp, dword [eax + 0x10]
sub dword [esp + 0x18], 1
jne 0x6c9a7b00
jmp 0x6c9a6960
test ebx, ebx
jne 0x6c9a7b62
jmp 0x6c9a6960
sub eax, ebx
mov edx, edi
mov ecx, eax
lea eax, [ebx + ebx*2]
mov dword [esp + 0x14], eax
mov eax, esi
jmp 0x6c9a7b3d
mov eax, dword [esp + 0x9c]
mov ebp, dword [esp + 0x38]
mov eax, dword [eax + 0xc]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x9c]
mov eax, dword [eax + 8]
mov ebx, eax
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x50]
mov esi, eax
add eax, eax
add esi, ebx
mov dword [esp + 0x20], eax
sub ebp, eax
mov dword [esp + 0xc], esi
lea esi, [esi]
nop
xor ebx, ebx
movzx eax, byte [edi]
movzx esi, byte [edi + 1]
add edi, 2
add ebx, eax
test esi, esi
je 0x6c9a7c60
mov eax, dword [esp + 0xc]
cmp eax, ebx
jle 0x6c9a7c38
mov edx, dword [esp + 0x50]
sub edx, ebx
test edx, edx
jle 0x6c9a7c70
mov eax, esi
sub eax, edx
test eax, eax
jle 0x6c9a7c38
lea ecx, [edi + edx*2]
mov edx, dword [esp + 0x20]
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x1c]
cmp eax, edx
mov dword [esp + 4], ecx
cmovg eax, edx
add eax, eax
mov dword [esp + 8], eax
mov eax, dword [esp + 0x14]
add eax, ebp
mov dword [esp], eax
call fcn.6c9a2290
lea edi, [edi + esi*2]
add ebx, esi
cmp dword [esp + 0x10], ebx
jne 0x6c9a7be2
mov eax, dword [esp + 0xa0]
add ebp, dword [eax + 0x10]
sub dword [esp + 0x18], 1
jne 0x6c9a7be0
jmp 0x6c9a6960
test ebx, ebx
jne 0x6c9a7c3d
jmp 0x6c9a6960
sub eax, ebx
mov ecx, edi
mov edx, eax
lea eax, [ebx + ebx]
mov dword [esp + 0x14], eax
mov eax, esi
jmp 0x6c9a7c1b
cmp dword [esp + 0x68], 0x3e0
sete dl
cmp dword [esp + 0x2c], 0x3e0
sete al
or dl, al
jne 0x6c9a7ca9
cmp dword [esp + 0x34], 0x3e0
jne 0x6c9a705a
cmp dword [esp + 0xc], 0x80
je 0x6c9a8a1b
mov eax, dword [esp + 0xc]
shr eax, 3
mov dword [esp + 0xc], eax
xor esi, esi
movzx eax, byte [edi]
movzx ebx, byte [edi + 1]
add edi, 2
add esi, eax
test ebx, ebx
je 0x6c9a7db0
cmp esi, dword [esp + 0x6c]
jge 0x6c9a7d81
mov eax, dword [esp + 0x50]
sub eax, esi
test eax, eax
jle 0x6c9a828e
mov edx, ebx
sub edx, eax
test edx, edx
jle 0x6c9a7d81
mov ebp, dword [esp + 0x78]
mov ecx, edx
lea eax, [edi + eax*2]
cmp edx, ebp
cmovg ecx, ebp
mov ebp, eax
mov eax, dword [esp + 0x70]
add eax, dword [esp + 0x7c]
test ecx, ecx
jle 0x6c9a7d81
mov dword [esp + 0x14], esi
xor edx, edx
mov esi, ecx
mov dword [esp + 0x18], edi
mov edi, ebp
mov dword [esp + 0x1c], ebx
mov ebx, eax
lea esi, [esi]
movzx eax, word [edi + edx*2]
movzx ecx, word [ebx + edx*2]
mov ebp, eax
shl ebp, 0x10
or eax, ebp
mov ebp, ecx
shl ebp, 0x10
and eax, 0x3e07c1f
or ebp, ecx
and ebp, 0x3e07c1f
sub eax, ebp
imul eax, dword [esp + 0xc]
shr eax, 5
add ebp, eax
and ebp, 0x3e07c1f
mov eax, ebp
shr eax, 0x10
or ebp, eax
mov word [ebx + edx*2], bp
add edx, 1
cmp edx, esi
jl 0x6c9a7d30
mov esi, dword [esp + 0x14]
mov edi, dword [esp + 0x18]
mov ebx, dword [esp + 0x1c]
lea edi, [edi + ebx*2]
add esi, ebx
cmp dword [esp + 0x10], esi
jne 0x6c9a7cc4
mov esi, dword [esp + 0x48]
add dword [esp + 0x70], esi
sub dword [esp + 0x74], 1
jne 0x6c9a7cc2
jmp 0x6c9a6960
test esi, esi
jne 0x6c9a7d86
jmp 0x6c9a6960
mov eax, dword [eax + 0xc]
mov dword [esp + 0x48], 0
mov dword [esp + 0x4c], edi
mov dword [esp + 0x58], eax
mov edi, dword [esp + 0x4c]
movzx ebx, byte [edi + 1]
movzx eax, byte [edi]
add edi, 2
add dword [esp + 0x48], eax
mov dword [esp + 0x54], ebx
mov dword [esp + 0x4c], edi
test ebx, ebx
jne 0x6c9a7e30
mov edx, dword [esp + 0x48]
test edx, edx
je 0x6c9a6960
mov edi, dword [esp + 0x10]
cmp dword [esp + 0x48], edi
jne 0x6c9a7dd3
mov edi, dword [esp + 0xa0]
mov edi, dword [edi + 0x10]
add dword [esp + 0x38], edi
sub dword [esp + 0x58], 1
je 0x6c9a6960
mov dword [esp + 0x48], 0
jmp 0x6c9a7dd3
mov edi, dword [esp + 0x48]
lea edx, [edi + edi*2]
mov edi, dword [esp + 0x38]
add edi, edx
test bl, bl
je 0x6c9a7fc8
lea eax, [ebx + ebx*2]
mov ebp, dword [esp + 0x4c]
add eax, edi
mov dword [esp + 0x50], eax
movzx edx, byte [ebp + 2]
movzx eax, byte [ebp + 1]
movzx ebx, byte [esi + 0x1c]
movzx ecx, byte [esi + 0x20]
shl eax, 8
shl edx, 0x10
or edx, eax
movzx eax, byte [ebp]
mov dword [esp + 0x3c], ebx
mov ebx, dword [ebx*4 + 0x6ca14140]
mov dword [esp + 0x20], ecx
or edx, eax
movzx eax, byte [edi + 2]
mov dword [esp + 0x1c], edx
shl eax, 0x10
mov edx, eax
movzx eax, byte [edi + 1]
shl eax, 8
or eax, edx
movzx edx, byte [edi]
or eax, edx
movzx edx, byte [esi + 0x1d]
mov dword [esp + 0x40], edx
mov edx, dword [edx*4 + 0x6ca14140]
mov dword [esp + 0x24], edx
movzx edx, byte [esi + 0x21]
mov dword [esp + 0x14], edx
movzx edx, byte [esi + 0x1e]
mov dword [esp + 0x44], edx
mov edx, dword [edx*4 + 0x6ca14140]
mov dword [esp + 0x28], edx
movzx edx, byte [esi + 0x22]
mov dword [esp + 0x18], edx
mov edx, dword [esi + 0xc]
and edx, eax
shr edx, cl
movzx ecx, byte [ebx + edx]
mov dword [esp + 0x2c], ecx
mov ecx, dword [esi + 0x10]
and ecx, eax
mov edx, ecx
movzx ecx, byte [esp + 0x14]
shr edx, cl
mov ecx, dword [esp + 0x24]
movzx ecx, byte [ecx + edx]
mov dword [esp + 0x30], ecx
and eax, dword [esi + 0x14]
movzx ecx, byte [esp + 0x18]
mov edx, dword [esp + 0x1c]
shr eax, cl
mov ecx, dword [esp + 0x28]
movzx eax, byte [ecx + eax]
movzx ecx, byte [esp + 0x20]
mov dword [esp + 0x34], eax
mov eax, dword [esi + 0xc]
and eax, edx
and edx, dword [esi + 0x10]
shr eax, cl
movzx ecx, byte [esp + 0x14]
movzx eax, byte [ebx + eax]
sub eax, dword [esp + 0x2c]
shr edx, cl
mov ecx, dword [esp + 0x24]
imul eax, dword [esp + 0xc]
movzx ebx, byte [ecx + edx]
movzx ecx, byte [esp + 0x18]
mov edx, dword [esp + 0x1c]
and edx, dword [esi + 0x14]
shr eax, 8
shr edx, cl
mov ecx, dword [esp + 0x28]
add eax, dword [esp + 0x2c]
sub ebx, dword [esp + 0x30]
imul ebx, dword [esp + 0xc]
movzx edx, byte [ecx + edx]
movzx ecx, byte [esp + 0x3c]
sub edx, dword [esp + 0x34]
imul edx, dword [esp + 0xc]
shr eax, cl
movzx ecx, byte [esp + 0x20]
shr ebx, 8
shl eax, cl
movzx ecx, byte [esp + 0x40]
shr edx, 8
add ebx, dword [esp + 0x30]
add edx, dword [esp + 0x34]
add ebp, 3
add edi, 3
shr ebx, cl
movzx ecx, byte [esp + 0x14]
shl ebx, cl
or eax, ebx
or eax, dword [esi + 0x18]
movzx ecx, byte [esp + 0x44]
shr edx, cl
movzx ecx, byte [esp + 0x18]
shl edx, cl
or eax, edx
mov byte [edi - 3], al
mov byte [edi - 2], ah
shr eax, 0x10
mov byte [edi - 1], al
cmp edi, dword [esp + 0x50]
jne 0x6c9a7e52
mov edi, dword [esp + 0x54]
add dword [esp + 0x48], edi
lea eax, [edi + edi*2]
add dword [esp + 0x4c], eax
jmp 0x6c9a7dfd
mov edx, eax
mov eax, dword [esi + 0xc]
mov ecx, dword [esi + 0x10]
mov dword [esp + 0x44], 0
mov edx, dword [edx + 0xc]
mov ebx, dword [esi + 0x14]
mov dword [esp + 0x54], edx
mov edx, eax
or edx, ecx
or edx, ebx
cmp edx, 0xffffff
je 0x6c9a85cc
mov dword [esp + 0x48], edi
mov edi, dword [esp + 0x48]
movzx ebx, word [edi + 2]
movzx eax, word [edi]
add edi, 4
add dword [esp + 0x44], eax
mov dword [esp + 0x50], ebx
mov eax, ebx
mov dword [esp + 0x48], edi
test ebx, ebx
jne 0x6c9a8070
mov eax, dword [esp + 0x44]
test eax, eax
je 0x6c9a6960
mov edi, dword [esp + 0x10]
cmp dword [esp + 0x44], edi
jne 0x6c9a8010
mov edi, dword [esp + 0xa0]
mov edi, dword [edi + 0x10]
add dword [esp + 0x38], edi
sub dword [esp + 0x54], 1
je 0x6c9a6960
mov dword [esp + 0x44], 0
jmp 0x6c9a8010
mov ebx, dword [esp + 0x44]
mov edi, dword [esp + 0x38]
lea edi, [edi + ebx*4]
mov ebx, dword [esp + 0x50]
lea ebx, [edi + ebx*4]
mov dword [esp + 0x4c], ebx
mov ebx, dword [esp + 0x48]
mov dword [esp + 0x34], ebx
test ax, ax
je 0x6c9a81de
lea esi, [esi]
nop
movzx ebp, byte [esi + 0x1d]
mov eax, dword [esp + 0x34]
movzx ebx, byte [esi + 0x1c]
movzx ecx, byte [esi + 0x20]
mov edx, dword [eax]
mov eax, dword [ebp*4 + 0x6ca14140]
mov dword [esp + 0x40], ebp
mov dword [esp + 0x3c], ebx
mov ebx, dword [ebx*4 + 0x6ca14140]
mov dword [esp + 0x24], eax
movzx eax, byte [esi + 0x22]
mov dword [esp + 0x1c], edx
mov edx, dword [edi]
mov dword [esp + 0x18], eax
mov eax, dword [esi + 0xc]
movzx ebp, byte [esi + 0x21]
mov dword [esp + 0x20], ecx
and eax, edx
shr eax, cl
mov dword [esp + 0x14], ebp
movzx ebp, byte [esi + 0x1e]
movzx ecx, byte [ebx + eax]
mov eax, dword [esi + 0x10]
mov dword [esp + 0x28], ecx
movzx ecx, byte [esp + 0x14]
and eax, edx
and edx, dword [esi + 0x14]
shr eax, cl
mov ecx, dword [esp + 0x24]
movzx eax, byte [ecx + eax]
movzx ecx, byte [esp + 0x18]
mov dword [esp + 0x2c], eax
mov eax, edx
mov edx, dword [ebp*4 + 0x6ca14140]
shr eax, cl
movzx edx, byte [edx + eax]
mov dword [esp + 0x30], edx
mov edx, dword [esp + 0x1c]
mov eax, dword [esi + 0xc]
movzx ecx, byte [esp + 0x20]
and eax, edx
and edx, dword [esi + 0x10]
shr eax, cl
movzx ecx, byte [esp + 0x14]
movzx eax, byte [ebx + eax]
sub eax, dword [esp + 0x28]
shr edx, cl
mov ecx, dword [esp + 0x24]
imul eax, dword [esp + 0xc]
movzx ebx, byte [ecx + edx]
movzx ecx, byte [esp + 0x18]
mov edx, dword [esp + 0x1c]
and edx, dword [esi + 0x14]
shr eax, 8
shr edx, cl
mov ecx, dword [ebp*4 + 0x6ca14140]
add eax, dword [esp + 0x28]
sub ebx, dword [esp + 0x2c]
imul ebx, dword [esp + 0xc]
movzx edx, byte [ecx + edx]
movzx ecx, byte [esp + 0x3c]
sub edx, dword [esp + 0x30]
imul edx, dword [esp + 0xc]
shr eax, cl
movzx ecx, byte [esp + 0x20]
shr ebx, 8
add ebx, dword [esp + 0x2c]
shl eax, cl
movzx ecx, byte [esp + 0x40]
shr edx, 8
add edx, dword [esp + 0x30]
shr ebx, cl
movzx ecx, byte [esp + 0x14]
shl ebx, cl
mov ecx, ebp
shr edx, cl
movzx ecx, byte [esp + 0x18]
or eax, ebx
or eax, dword [esi + 0x18]
shl edx, cl
or eax, edx
add dword [esp + 0x34], 4
add edi, 4
mov dword [edi - 4], eax
cmp edi, dword [esp + 0x4c]
jne 0x6c9a80a0
mov edi, dword [esp + 0x48]
mov eax, dword [esp + 0x50]
add dword [esp + 0x44], eax
lea edi, [edi + eax*4]
mov dword [esp + 0x48], edi
jmp 0x6c9a803c
test ebp, ebp
je 0x6c9a6960
mov edi, ebx
jmp 0x6c9a791f
mov ebx, dword [esp + 0x38]
mov ecx, edi
lea edx, [ebx + esi*2]
mov ebx, dword [esp + 0xc]
lea ebx, [edx + ebx*2]
test al, al
je 0x6c9a8280
mov dword [esp + 0x18], edi
mov edi, dword [esp + 0x1c]
mov dword [esp + 0x14], esi
mov esi, ebx
add ecx, 2
movzx eax, word [ecx - 2]
movzx ebx, word [edx]
add edx, 2
mov ebp, eax
shl ebp, 0x10
or eax, ebp
mov ebp, ebx
shl ebp, 0x10
and eax, 0x7e0f81f
or ebp, ebx
and ebp, 0x7e0f81f
sub eax, ebp
imul eax, edi
shr eax, 5
lea ebx, [eax + ebp]
and ebx, 0x7e0f81f
mov eax, ebx
shr eax, 0x10
or ebx, eax
mov word [edx - 2], bx
cmp edx, esi
jne 0x6c9a8232
mov esi, dword [esp + 0x14]
mov edi, dword [esp + 0x18]
mov eax, dword [esp + 0xc]
lea edi, [edi + eax*2]
add esi, eax
jmp 0x6c9a6be4
mov eax, dword [esp + 0x6c]
mov ebp, edi
sub eax, esi
cmp eax, ebx
cmovg eax, ebx
mov ecx, eax
mov eax, dword [esp + 0x70]
lea eax, [eax + esi*2]
jmp 0x6c9a7d18
mov eax, dword [esp + 0x6c]
mov ebp, edi
sub eax, esi
cmp eax, ebx
cmovg eax, ebx
mov ecx, eax
mov eax, dword [esp + 0x70]
lea eax, [eax + esi*2]
jmp 0x6c9a76f6
mov dword [esp + 0x44], 0
mov dword [esp + 0x6c], esi
mov dword [esp + 0x4c], edi
mov esi, dword [esp + 0x4c]
movzx edi, byte [esi + 1]
movzx eax, byte [esi]
add esi, 2
add dword [esp + 0x44], eax
mov dword [esp + 0x64], edi
mov eax, edi
mov dword [esp + 0x4c], esi
test edi, edi
jne 0x6c9a8330
mov ecx, dword [esp + 0x44]
test ecx, ecx
je 0x6c9a6960
mov esi, dword [esp + 0x10]
cmp dword [esp + 0x44], esi
jne 0x6c9a82d4
mov esi, dword [esp + 0x48]
add dword [esp + 0x38], esi
sub dword [esp + 0x68], 1
je 0x6c9a6960
mov dword [esp + 0x44], 0
jmp 0x6c9a82d4
mov esi, dword [esp + 0x38]
mov edi, dword [esp + 0x44]
lea edi, [esi + edi*2]
test al, al
je 0x6c9a84aa
mov eax, dword [esp + 0x6c]
movzx esi, byte [eax + 0x1c]
mov dword [esp + 0x50], esi
mov esi, dword [esi*4 + 0x6ca14140]
mov dword [esp + 0x28], esi
movzx esi, byte [eax + 0x20]
mov dword [esp + 0x14], esi
movzx esi, byte [eax + 0x1d]
mov dword [esp + 0x54], esi
mov esi, dword [esi*4 + 0x6ca14140]
mov dword [esp + 0x2c], esi
movzx esi, byte [eax + 0x21]
mov dword [esp + 0x18], esi
movzx esi, byte [eax + 0x1e]
mov dword [esp + 0x58], esi
mov esi, dword [esi*4 + 0x6ca14140]
mov dword [esp + 0x30], esi
movzx esi, byte [eax + 0x22]
mov eax, dword [eax + 0x18]
mov dword [esp + 0x1c], esi
mov esi, dword [esp + 0x4c]
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x64]
lea eax, [edi + eax*2]
mov dword [esp + 0x60], eax
nop
movzx eax, word [edi]
mov ebx, dword [esp + 0x34]
movzx ecx, byte [esp + 0x14]
movzx edx, word [esi]
and ebx, eax
shr ebx, cl
mov ecx, dword [esp + 0x28]
movzx ebp, byte [ecx + ebx]
mov ebx, dword [esp + 0x3c]
movzx ecx, byte [esp + 0x18]
and ebx, eax
and eax, dword [esp + 0x40]
shr ebx, cl
mov ecx, dword [esp + 0x2c]
movzx ebx, byte [ecx + ebx]
movzx ecx, byte [esp + 0x1c]
mov dword [esp + 0x20], ebx
mov ebx, dword [esp + 0x30]
shr eax, cl
movzx ecx, byte [esp + 0x14]
movzx eax, byte [ebx + eax]
mov ebx, dword [esp + 0x3c]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x34]
and ebx, edx
and eax, edx
and edx, dword [esp + 0x40]
shr eax, cl
mov ecx, dword [esp + 0x28]
movzx eax, byte [ecx + eax]
movzx ecx, byte [esp + 0x18]
shr ebx, cl
mov ecx, dword [esp + 0x2c]
sub eax, ebp
imul eax, dword [esp + 0xc]
movzx ebx, byte [ecx + ebx]
movzx ecx, byte [esp + 0x1c]
sub ebx, dword [esp + 0x20]
imul ebx, dword [esp + 0xc]
shr edx, cl
mov ecx, dword [esp + 0x30]
shr eax, 8
add eax, ebp
movzx edx, byte [ecx + edx]
sub edx, dword [esp + 0x24]
shr ebx, 8
imul edx, dword [esp + 0xc]
movzx ecx, byte [esp + 0x50]
add ebx, dword [esp + 0x20]
shr eax, cl
movzx ecx, byte [esp + 0x14]
shr edx, 8
add edx, dword [esp + 0x24]
shl eax, cl
movzx ecx, byte [esp + 0x54]
shr ebx, cl
movzx ecx, byte [esp + 0x18]
shl ebx, cl
movzx ecx, byte [esp + 0x58]
or eax, ebx
or eax, dword [esp + 0x5c]
shr edx, cl
movzx ecx, byte [esp + 0x1c]
shl edx, cl
or eax, edx
add esi, 2
add edi, 2
mov word [edi - 2], ax
cmp edi, dword [esp + 0x60]
jne 0x6c9a83b0
mov esi, dword [esp + 0x4c]
mov eax, dword [esp + 0x64]
add dword [esp + 0x44], eax
lea esi, [esi + eax*2]
mov dword [esp + 0x4c], esi
jmp 0x6c9a8300
mov eax, dword [esp + 0x54]
mov edi, dword [esp + 0x14]
mov edx, esi
sub eax, ebp
cmp eax, edi
cmovg eax, edi
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x58]
lea edi, [eax + ebp*4]
jmp 0x6c9a7821
test byte [esp + 0xc], 3
je 0x6c9a8fc6
movzx eax, word [edi + 2]
movzx esi, word [ecx]
lea ebx, [edi + 4]
lea edi, [ecx + 2]
mov dword [esp + 0x1c], edi
mov edx, eax
mov edi, esi
and eax, esi
and edx, 0xf7de
and edi, 0xf7de
and ax, 0x821
add edx, edi
shr edx, 1
add eax, edx
mov word [ecx], ax
mov eax, dword [esp + 0x14]
sub eax, 1
mov dword [esp + 0x18], eax
cmp eax, 1
jbe 0x6c9a8ffd
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x24], ebp
sub eax, 2
shr eax, 1
lea eax, [eax*4 + 4]
mov dword [esp + 0x20], eax
lea edi, [ebx + eax]
mov edx, dword [ebx]
mov ebp, dword [ecx]
add ebx, 4
add ecx, 4
mov esi, edx
mov eax, ebp
and edx, ebp
shr esi, 1
shr eax, 1
and edx, 0x8210821
and esi, 0x7bef7bef
and eax, 0x7bef7bef
add eax, esi
add eax, edx
mov dword [ecx - 4], eax
cmp ebx, edi
jne 0x6c9a8551
mov esi, dword [esp + 0x20]
and dword [esp + 0x18], 1
add dword [esp + 0x1c], esi
mov ebp, dword [esp + 0x24]
mov esi, dword [esp + 0x18]
test esi, esi
je 0x6c9a7912
mov esi, dword [esp + 0x1c]
movzx eax, word [edi]
movzx ecx, word [esi]
mov edx, eax
and edx, 0xf7de
mov ebx, ecx
and eax, ecx
and ebx, 0xf7de
and ax, 0x821
add edx, ebx
shr edx, 1
add edx, eax
mov word [esi], dx
jmp 0x6c9a7912
cmp eax, 0xff00
sete dl
cmp ecx, 0xff00
sete al
or dl, al
jne 0x6c9a85ed
cmp ebx, 0xff00
jne 0x6c9a800c
xor ebp, ebp
cmp dword [esp + 0xc], 0x80
je 0x6c9a865c
lea esi, [esi]
movzx eax, word [edi]
movzx esi, word [edi + 2]
add edi, 4
add ebp, eax
mov dword [esp + 0x18], esi
mov eax, esi
test esi, esi
jne 0x6c9a8686
test ebp, ebp
je 0x6c9a6960
cmp ebp, dword [esp + 0x10]
jne 0x6c9a8600
mov esi, dword [esp + 0xa0]
mov esi, dword [esi + 0x10]
add dword [esp + 0x38], esi
sub dword [esp + 0x54], 1
je 0x6c9a6960
xor ebp, ebp
jmp 0x6c9a8600
mov esi, dword [esp + 0xa0]
mov esi, dword [esi + 0x10]
add dword [esp + 0x38], esi
sub dword [esp + 0x54], 1
je 0x6c9a6960
xor ebp, ebp
movzx eax, word [edi]
movzx esi, word [edi + 2]
add edi, 4
add ebp, eax
mov dword [esp + 0xc], esi
mov eax, esi
test esi, esi
jne 0x6c9a8717
test ebp, ebp
je 0x6c9a6960
cmp ebp, dword [esp + 0x10]
jne 0x6c9a865c
jmp 0x6c9a8641
mov esi, dword [esp + 0x38]
lea ebx, [esi + ebp*4]
mov esi, dword [esp + 0x18]
lea esi, [ebx + esi*4]
mov dword [esp + 0x14], esi
mov esi, edi
test ax, ax
je 0x6c9a8709
mov dword [esp + 0x20], edi
mov dword [esp + 0x1c], ebp
mov ebp, dword [esp + 0xc]
lea esi, [esi]
nop
add esi, 4
mov ecx, dword [ebx]
mov eax, dword [esi - 4]
add ebx, 4
mov edi, ecx
mov edx, eax
and ecx, 0xff00
and eax, 0xff00
and edi, 0xff00ff
and edx, 0xff00ff
sub eax, ecx
sub edx, edi
imul eax, ebp
imul edx, ebp
shr eax, 8
shr edx, 8
add ecx, eax
add edx, edi
and ecx, 0xff00
and edx, 0xff00ff
or edx, ecx
mov dword [ebx - 4], edx
cmp ebx, dword [esp + 0x14]
jne 0x6c9a86b0
mov ebp, dword [esp + 0x1c]
mov edi, dword [esp + 0x20]
mov eax, dword [esp + 0x18]
lea edi, [edi + eax*4]
add ebp, eax
jmp 0x6c9a861e
mov esi, dword [esp + 0x38]
mov ebx, edi
lea ecx, [esi + ebp*4]
mov esi, dword [esp + 0xc]
lea esi, [ecx + esi*4]
test ax, ax
je 0x6c9a8776
mov dword [esp + 0x18], edi
mov dword [esp + 0x14], ebp
mov ebp, esi
lea esi, [esi]
lea esi, [esi]
mov edx, dword [ebx]
mov esi, dword [ecx]
add ecx, 4
add ebx, 4
mov eax, edx
mov edi, esi
and edx, esi
and eax, 0xfefefe
and edi, 0xfefefe
and edx, 0x10101
add eax, edi
shr eax, 1
add eax, edx
mov dword [ecx - 4], eax
cmp ecx, ebp
jne 0x6c9a8740
mov ebp, dword [esp + 0x14]
mov edi, dword [esp + 0x18]
mov eax, dword [esp + 0xc]
lea edi, [edi + eax*4]
add ebp, eax
jmp 0x6c9a867e
cmp dword [esp + 0x34], 0x3e0
sete dl
cmp dword [esp + 0x3c], 0x3e0
sete al
or dl, al
jne 0x6c9a87ac
cmp dword [esp + 0x40], 0x3e0
jne 0x6c9a82c4
cmp dword [esp + 0xc], 0x80
je 0x6c9a882f
mov eax, dword [esp + 0xc]
shr eax, 3
mov dword [esp + 0x1c], eax
xor esi, esi
movzx eax, byte [edi]
movzx ebx, byte [edi + 1]
add edi, 2
add esi, eax
mov dword [esp + 0xc], ebx
mov eax, ebx
test ebx, ebx
jne 0x6c9a88b0
test esi, esi
je 0x6c9a6960
cmp esi, dword [esp + 0x10]
jne 0x6c9a87c3
mov esi, dword [esp + 0x48]
add dword [esp + 0x38], esi
sub dword [esp + 0x68], 1
jne 0x6c9a87c1
jmp 0x6c9a6960
mov ebp, dword [esp + 0x18]
mov eax, dword [esp + 0x14]
mov esi, dword [esp + 0xc]
add ebp, eax
lea edi, [esi + eax*2]
cmp ebp, dword [esp + 0x10]
jne 0x6c9a8831
mov esi, dword [esp + 0xa0]
mov esi, dword [esi + 0x10]
add dword [esp + 0x38], esi
sub dword [esp + 0x68], 1
je 0x6c9a6960
xor ebp, ebp
movzx eax, byte [edi]
movzx esi, byte [edi + 1]
lea ebx, [edi + 2]
mov dword [esp + 0xc], ebx
add ebp, eax
mov dword [esp + 0x14], esi
test esi, esi
je 0x6c9a88a0
mov eax, dword [esp + 0x38]
lea ecx, [eax + ebp*2]
mov eax, ebx
xor eax, ecx
test al, 3
je 0x6c9a892e
mov dword [esp + 0x18], ebp
sub esi, 1
add ebx, 2
movzx edi, word [ecx]
movzx eax, word [ebx - 2]
add ecx, 2
sub esi, 1
mov edx, eax
mov ebp, edi
and eax, edi
and edx, 0xfbde
and ebp, 0xfbde
and ax, 0x421
add edx, ebp
shr edx, 1
add eax, edx
mov word [ecx - 2], ax
cmp esi, 0xffffffff
jne 0x6c9a8863
jmp 0x6c9a87ff
test ebp, ebp
je 0x6c9a6960
mov edi, ebx
jmp 0x6c9a8810
mov ebx, dword [esp + 0x38]
mov ecx, edi
lea edx, [ebx + esi*2]
mov ebx, dword [esp + 0xc]
lea ebx, [edx + ebx*2]
test al, al
je 0x6c9a8920
mov dword [esp + 0x18], edi
mov edi, dword [esp + 0x1c]
mov dword [esp + 0x14], esi
mov esi, ebx
add ecx, 2
movzx eax, word [ecx - 2]
movzx ebx, word [edx]
add edx, 2
mov ebp, eax
shl ebp, 0x10
or eax, ebp
mov ebp, ebx
shl ebp, 0x10
and eax, 0x3e07c1f
or ebp, ebx
and ebp, 0x3e07c1f
sub eax, ebp
imul eax, edi
shr eax, 5
lea ebx, [eax + ebp]
and ebx, 0x3e07c1f
mov eax, ebx
shr eax, 0x10
or ebx, eax
mov word [edx - 2], bx
cmp edx, esi
jne 0x6c9a88d2
mov esi, dword [esp + 0x14]
mov edi, dword [esp + 0x18]
mov eax, dword [esp + 0xc]
lea edi, [edi + eax*2]
add esi, eax
jmp 0x6c9a87e5
test byte [esp + 0xc], 3
je 0x6c9a8fde
movzx eax, word [edi + 2]
movzx esi, word [ecx]
lea ebx, [edi + 4]
lea edi, [ecx + 2]
mov dword [esp + 0x1c], edi
mov edx, eax
mov edi, esi
and eax, esi
and edx, 0xfbde
and edi, 0xfbde
and ax, 0x421
add edx, edi
shr edx, 1
add eax, edx
mov word [ecx], ax
mov eax, dword [esp + 0x14]
sub eax, 1
mov dword [esp + 0x18], eax
cmp eax, 1
jbe 0x6c9a8ff6
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x24], ebp
sub eax, 2
shr eax, 1
lea eax, [eax*4 + 4]
mov dword [esp + 0x20], eax
lea edi, [ebx + eax]
lea esi, [esi]
mov edx, dword [ebx]
mov ebp, dword [ecx]
add ebx, 4
add ecx, 4
mov esi, edx
mov eax, ebp
and edx, ebp
shr esi, 1
shr eax, 1
and edx, 0x4210421
and esi, 0x7def7def
and eax, 0x7def7def
add eax, esi
add eax, edx
mov dword [ecx - 4], eax
cmp ebx, edi
jne 0x6c9a89a0
mov esi, dword [esp + 0x20]
and dword [esp + 0x18], 1
add dword [esp + 0x1c], esi
mov ebp, dword [esp + 0x24]
mov ebx, dword [esp + 0x18]
test ebx, ebx
je 0x6c9a8803
mov esi, dword [esp + 0x1c]
movzx eax, word [edi]
movzx ecx, word [esi]
mov edx, eax
and edx, 0xfbde
mov ebx, ecx
and eax, ecx
and ebx, 0xfbde
and ax, 0x421
add edx, ebx
shr edx, 1
add edx, eax
mov word [esi], dx
jmp 0x6c9a8803
xor esi, esi
mov ebp, esi
nop
movzx eax, byte [edi]
movzx esi, byte [edi + 1]
add edi, 2
add ebp, eax
mov dword [esp + 0xc], esi
test esi, esi
je 0x6c9a8b13
mov ebx, dword [esp + 0x6c]
cmp ebp, ebx
jge 0x6c9a8ae0
mov eax, dword [esp + 0x50]
sub eax, ebp
test eax, eax
jle 0x6c9a8b1c
mov edx, esi
sub edx, eax
test edx, edx
jle 0x6c9a8ae0
lea esi, [edi + eax*2]
mov eax, dword [esp + 0x78]
mov ecx, edx
mov ebx, dword [esp + 0x70]
mov dword [esp + 0x1c], esi
cmp edx, eax
cmovg ecx, eax
add ebx, dword [esp + 0x7c]
mov eax, esi
mov edx, ebx
mov dword [esp + 0x18], ebx
xor edx, esi
mov dword [esp + 0x14], ecx
and edx, 3
je 0x6c9a8b47
mov eax, ecx
lea ecx, [ecx - 1]
test eax, eax
je 0x6c9a8ae0
mov dword [esp + 0x14], ebp
mov dword [esp + 0x1c], edi
add esi, 2
movzx edi, word [ebx]
movzx eax, word [esi - 2]
add ebx, 2
sub ecx, 1
mov edx, eax
mov ebp, edi
and eax, edi
and edx, 0xfbde
and ebp, 0xfbde
and ax, 0x421
add edx, ebp
shr edx, 1
add edx, eax
mov word [ebx - 2], dx
cmp ecx, 0xffffffff
jne 0x6c9a8aa0
mov ebp, dword [esp + 0x14]
mov edi, dword [esp + 0x1c]
lea esi, [esi]
mov eax, dword [esp + 0xc]
lea edi, [edi + eax*2]
add ebp, eax
cmp dword [esp + 0x10], ebp
jne 0x6c9a8a20
mov esi, dword [esp + 0xa0]
mov esi, dword [esi + 0x10]
add dword [esp + 0x70], esi
sub dword [esp + 0x74], 1
je 0x6c9a6960
xor ebp, ebp
jmp 0x6c9a8a20
test ebp, ebp
jne 0x6c9a8ae9
jmp 0x6c9a6960
mov eax, ebx
sub eax, ebp
cmp eax, esi
cmovg eax, esi
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x70]
lea eax, [eax + ebp*2]
mov edx, eax
mov dword [esp + 0x18], eax
mov eax, edi
xor edx, edi
and edx, 3
jne 0x6c9a8c4a
mov dword [esp + 0x1c], edi
test al, 3
je 0x6c9a8b93
mov eax, dword [esp + 0x1c]
mov esi, dword [esp + 0x18]
sub dword [esp + 0x14], 1
movzx ebx, word [eax]
movzx ecx, word [esi]
add esi, 2
mov edx, ebx
and ebx, ecx
and edx, 0xfbde
and bx, 0x421
mov eax, edx
mov edx, ecx
and edx, 0xfbde
add eax, edx
shr eax, 1
add eax, ebx
mov word [esi - 2], ax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x18], esi
add eax, 2
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov esi, dword [esp + 0x1c]
mov ebx, eax
cmp eax, 1
jbe 0x6c9a8c0b
mov dword [esp + 0x20], ebp
mov dword [esp + 0x24], edi
mov edi, ebx
mov edx, dword [esi]
mov ebp, dword [ecx]
sub edi, 2
add esi, 4
add ecx, 4
mov eax, edx
mov ebx, ebp
and edx, ebp
shr eax, 1
shr ebx, 1
and edx, 0x4210421
and eax, 0x7def7def
and ebx, 0x7def7def
add eax, ebx
add eax, edx
mov dword [ecx - 4], eax
cmp edi, 1
ja 0x6c9a8bb0
mov esi, dword [esp + 0x14]
mov ebp, dword [esp + 0x20]
mov edi, dword [esp + 0x24]
lea eax, [esi - 2]
and esi, 1
shr eax, 1
mov dword [esp + 0x14], esi
lea eax, [eax*4 + 4]
add dword [esp + 0x1c], eax
add dword [esp + 0x18], eax
mov eax, dword [esp + 0x14]
test eax, eax
je 0x6c9a8ae0
mov eax, dword [esp + 0x1c]
mov esi, dword [esp + 0x18]
movzx ebx, word [eax]
movzx edx, word [esi]
mov eax, ebx
mov ecx, edx
and ebx, edx
and eax, 0xfbde
and ecx, 0xfbde
and bx, 0x421
add eax, ecx
shr eax, 1
lea eax, [ebx + eax]
mov word [esi], ax
jmp 0x6c9a8ae0
mov ecx, dword [esp + 0x14]
mov esi, edi
mov ebx, dword [esp + 0x18]
mov dword [esp + 0x14], ebp
mov dword [esp + 0x1c], edi
sub ecx, 1
jmp 0x6c9a8aa0
xor esi, esi
mov ebp, edi
mov edi, esi
lea esi, [esi]
movzx eax, byte [ebp]
movzx esi, byte [ebp + 1]
add ebp, 2
add edi, eax
mov dword [esp + 0xc], esi
test esi, esi
je 0x6c9a8d64
mov ebx, dword [esp + 0x6c]
cmp edi, ebx
jge 0x6c9a8d30
mov eax, dword [esp + 0x50]
sub eax, edi
test eax, eax
jle 0x6c9a8d6d
mov edx, esi
sub edx, eax
test edx, edx
jle 0x6c9a8d30
lea esi, [ebp + eax*2]
mov eax, dword [esp + 0x78]
mov ecx, edx
mov ebx, dword [esp + 0x70]
mov dword [esp + 0x1c], esi
cmp edx, eax
cmovg ecx, eax
add ebx, dword [esp + 0x7c]
mov eax, esi
mov edx, ebx
mov dword [esp + 0x18], ebx
xor edx, esi
mov dword [esp + 0x14], ecx
and edx, 3
je 0x6c9a8d98
mov eax, ecx
lea ecx, [ecx - 1]
test eax, eax
je 0x6c9a8d30
mov dword [esp + 0x14], ebp
mov dword [esp + 0x18], edi
add esi, 2
movzx edi, word [ebx]
movzx eax, word [esi - 2]
add ebx, 2
sub ecx, 1
mov edx, eax
mov ebp, edi
and eax, edi
and edx, 0xf7de
and ebp, 0xf7de
and ax, 0x821
add edx, ebp
shr edx, 1
add edx, eax
mov word [ebx - 2], dx
cmp ecx, 0xffffffff
jne 0x6c9a8cf2
mov ebp, dword [esp + 0x14]
mov edi, dword [esp + 0x18]
nop
mov eax, dword [esp + 0xc]
lea ebp, [ebp + eax*2]
add edi, eax
cmp dword [esp + 0x10], edi
jne 0x6c9a8c70
mov esi, dword [esp + 0xa0]
mov esi, dword [esi + 0x10]
add dword [esp + 0x70], esi
sub dword [esp + 0x74], 1
je 0x6c9a6960
xor edi, edi
jmp 0x6c9a8c70
test edi, edi
jne 0x6c9a8d3a
jmp 0x6c9a6960
mov eax, ebx
sub eax, edi
cmp eax, esi
cmovg eax, esi
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x70]
lea eax, [eax + edi*2]
mov edx, eax
mov dword [esp + 0x18], eax
mov eax, ebp
xor edx, ebp
and edx, 3
jne 0x6c9a8e9b
mov dword [esp + 0x1c], ebp
test al, 3
je 0x6c9a8de4
mov eax, dword [esp + 0x1c]
mov esi, dword [esp + 0x18]
sub dword [esp + 0x14], 1
movzx ebx, word [eax]
movzx ecx, word [esi]
add esi, 2
mov edx, ebx
and ebx, ecx
and edx, 0xf7de
and bx, 0x821
mov eax, edx
mov edx, ecx
and edx, 0xf7de
add eax, edx
shr eax, 1
add eax, ebx
mov word [esi - 2], ax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x18], esi
add eax, 2
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov esi, dword [esp + 0x1c]
mov ebx, eax
cmp eax, 1
jbe 0x6c9a8e5c
mov dword [esp + 0x20], ebp
mov dword [esp + 0x24], edi
mov edi, ebx
mov edx, dword [esi]
mov ebp, dword [ecx]
sub edi, 2
add esi, 4
add ecx, 4
mov eax, edx
mov ebx, ebp
and edx, ebp
shr eax, 1
shr ebx, 1
and edx, 0x8210821
and eax, 0x7bef7bef
and ebx, 0x7bef7bef
add eax, ebx
add eax, edx
mov dword [ecx - 4], eax
cmp edi, 1
ja 0x6c9a8e01
mov esi, dword [esp + 0x14]
mov ebp, dword [esp + 0x20]
mov edi, dword [esp + 0x24]
lea eax, [esi - 2]
and esi, 1
shr eax, 1
mov dword [esp + 0x14], esi
lea eax, [eax*4 + 4]
add dword [esp + 0x1c], eax
add dword [esp + 0x18], eax
mov eax, dword [esp + 0x14]
test eax, eax
je 0x6c9a8d30
mov eax, dword [esp + 0x1c]
mov esi, dword [esp + 0x18]
movzx ebx, word [eax]
movzx edx, word [esi]
mov eax, ebx
mov ecx, edx
and ebx, edx
and eax, 0xf7de
and ecx, 0xf7de
and bx, 0x821
add eax, ecx
shr eax, 1
lea eax, [ebx + eax]
mov word [esi], ax
jmp 0x6c9a8d30
mov ecx, dword [esp + 0x14]
mov ebx, dword [esp + 0x18]
mov esi, ebp
mov dword [esp + 0x14], ebp
mov dword [esp + 0x18], edi
sub ecx, 1
jmp 0x6c9a8cf2
mov ebx, edi
mov edi, ebp
lea esi, [esi]
movzx eax, word [ebx]
movzx ebp, word [ebx + 2]
add ebx, 4
add edi, eax
test ebp, ebp
je 0x6c9a8fa0
cmp edi, dword [esp + 0x54]
jge 0x6c9a8f69
mov eax, dword [esp + 0x50]
sub eax, edi
test eax, eax
jle 0x6c9a8fa9
mov edx, ebp
sub edx, eax
test edx, edx
jle 0x6c9a8f69
mov esi, dword [esp + 0x64]
mov ecx, edx
lea eax, [ebx + eax*4]
mov dword [esp + 0xc], eax
cmp edx, esi
cmovg ecx, esi
mov esi, dword [esp + 0x58]
add esi, dword [esp + 0x68]
mov edx, ecx
test ecx, ecx
jle 0x6c9a8f69
mov dword [esp + 0x18], ebp
mov ebp, dword [esp + 0xc]
xor ecx, ecx
mov dword [esp + 0xc], edi
mov dword [esp + 0x14], ebx
mov ebx, edx
lea esi, [esi]
nop
mov edx, dword [ebp + ecx*4]
mov edi, dword [esi + ecx*4]
mov eax, edx
and edi, 0xfefefe
and edx, dword [esi + ecx*4]
and eax, 0xfefefe
and edx, 0x10101
add eax, edi
shr eax, 1
add eax, edx
mov dword [esi + ecx*4], eax
add ecx, 1
cmp ebx, ecx
jg 0x6c9a8f30
mov ebx, dword [esp + 0x14]
mov ebp, dword [esp + 0x18]
mov edi, dword [esp + 0xc]
lea ebx, [ebx + ebp*4]
add edi, ebp
cmp dword [esp + 0x10], edi
jne 0x6c9a8ec0
mov esi, dword [esp + 0xa0]
mov esi, dword [esi + 0x10]
add dword [esp + 0x58], esi
sub dword [esp + 0x5c], 1
je 0x6c9a6960
xor edi, edi
jmp 0x6c9a8ec0
test edi, edi
jne 0x6c9a8f6e
jmp 0x6c9a6960
mov eax, dword [esp + 0x54]
mov dword [esp + 0xc], ebx
sub eax, edi
cmp eax, ebp
cmovg eax, ebp
mov edx, eax
mov eax, dword [esp + 0x58]
lea esi, [eax + edi*4]
jmp 0x6c9a8f14
mov dword [esp + 0x1c], ecx
mov edi, ebx
mov dword [esp + 0x18], esi
cmp esi, 1
jne 0x6c9a8532
jmp 0x6c9a859e
mov dword [esp + 0x18], esi
mov edi, ebx
mov dword [esp + 0x1c], ecx
cmp esi, 1
jne 0x6c9a897d
jmp 0x6c9a89ed
mov edi, ebx
jmp 0x6c9a89e1
mov edi, ebx
jmp 0x6c9a8592