Function at 0x6fdf6610
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push ebp
mov eax, 0x93cc
push edi
push esi
push ebx
call fcn.703e0830
mov ebp, 7
xor edx, edx
sub esp, eax
movzx eax, byte [esp + 0x93f4]
mov ebx, dword [esp + 0x93e8]
mov edi, dword [esp + 0x93f0]
mov esi, dword [esp + 0x93ec]
mov byte [esp + 0x112], al
mov eax, dword [esp + 0x93e0]
sub ebp, ebx
mov ebx, dword [esp + 0x93ec]
mov eax, dword [eax + 0x44]
cmp byte [eax + edi], 1
mov eax, ecx
mov edi, ecx
mov dword [esp + 0x174], edi
setne dl
lea edx, [edx + edx*2]
add edx, esi
mov esi, dword [esp + 0x93e8]
shl ebx, 5
add eax, ebx
mov dword [esp + 0x20], eax
mov eax, dword [eax + 0xc]
lea edx, [edx + edx*2]
lea ecx, [esi + esi]
mov esi, 1
mov ebx, esi
shl ebx, cl
mov dword [esp + 0x134], eax
lea eax, [ebp + eax + 0xe]
mov dword [esp + 0x14], ebx
lea ecx, [eax - 1]
mov ebx, esi
shl ebx, cl
mov dword [esp + 0x10], ebx
mov ebx, dword [esp + 0x93e8]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x93e4]
mov dword [esp + 8], eax
lea eax, [ebx + ebx*8 - 0x12]
shl eax, 2
mov ecx, dword [edi]
lea edi, [eax + edx*2]
mov eax, dword [esp + 0x20]
mov edx, dword [eax + 8]
add edi, edx
mov eax, dword [ecx + edi*4 + 0xc0]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x174]
mov eax, dword [eax + 0x78]
mov dword [esp], eax
call dword [0x70e9df88]
test eax, eax
je 0x6fdf7d21
movzx ecx, byte [esp + 0x93e8]
mov eax, esi
mov ebx, dword [esp + 0x20]
shl eax, cl
mov ecx, dword [esp + 0x174]
mov dword [esp + 0x164], eax
mov eax, dword [ebx + 0x18]
mov edx, dword [ecx + 0x74]
mov dword [esp + 0x64], eax
mov eax, dword [ebx + 0x1c]
mov dword [esp + 0x68], eax
mov eax, dword [ebx + 0x20]
imul edx, eax
mov eax, dword [ebx + 0x24]
imul eax, dword [ecx + 0x70]
add eax, edx
mov dword [esp + 0x20], eax
mov eax, dword [ebx + 0x20]
mov dword [esp + 0x28], eax
mul dword [ecx + 0x70]
mov dword [esp + 0x34], edx
mov edx, dword [ecx]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x20]
add dword [esp + 0x34], eax
mov eax, dword [edx + edi*4 + 0x300]
mov dword [esp + 0x138], eax
mov eax, 6
sub eax, ebp
cmp byte [edx + 0x540], 1
mov ecx, eax
sbb eax, eax
xor edx, edx
not eax
and eax, 4
add eax, ecx
cmp dword [esp + 0x134], eax
mov dword [esp + 0x88], eax
mov dword [esp + 0x84], edx
jl 0x6fdf8094
mov ebx, dword [esp + 0x93ec]
mov esi, ebp
neg esi
mov ecx, dword [esp + 0x93e0]
add esi, esi
lea eax, [esi + 0xf]
test ebx, ebx
sete byte [esp + 0x113]
mov dword [esp + 0x50], eax
movzx eax, byte [esp + 0x113]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x93e8]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x93f0]
mov dword [esp + 4], eax
lea eax, [esp + 0x184]
mov dword [esp], eax
call fcn.6fdf55c0
mov eax, 1
sub esp, 0x10
mov edx, dword [esp + 0x190]
mov edi, dword [esp + 0x174]
lea ecx, [edx + edx]
mov ebx, edx
shl eax, cl
mov ecx, dword [edi + 4]
mov dword [esp + 0x148], edx
mov dword [esp + 0xf0], ecx
mov ecx, eax
dec ecx
mov dword [esp + 0x114], ecx
js 0x6fdf7a3b
mov ecx, 0xffffffff
xor ebp, ebp
mov dword [esp + 0x130], ecx
xor ecx, ecx
mov dword [esp + 0xb8], ecx
xor ecx, ecx
mov dword [esp + 0xa4], ecx
mov ecx, dword [edi + 0x78]
shl eax, 7
mov edi, dword [edi + 0x7c]
mov dword [esp + 0x17c], eax
xor eax, eax
mov dword [esp + 0x160], eax
xor eax, eax
mov dword [esp + 0xe0], eax
xor eax, eax
mov dword [esp + 0x10c], edi
mov edi, dword [esp + 0x194]
mov dword [esp + 0xe4], eax
xor eax, eax
mov dword [esp + 0x100], eax
xor eax, eax
mov dword [esp + 0x104], eax
mov eax, 0xffffffff
mov dword [esp + 0x108], ecx
mov ecx, dword [esp + 0x188]
mov dword [esp + 0x9c], eax
xor eax, eax
mov dword [esp + 0x140], edi
mov edi, dword [esp + 0x184]
mov dword [esp + 0x118], eax
xor eax, eax
mov dword [esp + 0x40], eax
xor eax, eax
mov dword [esp + 0xcc], eax
mov eax, 1
mov dword [esp + 0x168], ecx
mov cl, dl
mov edx, dword [esp + 0x148]
mov dword [esp + 0xc8], eax
mov dword [esp + 0x144], edi
mov edi, eax
shl eax, cl
mov ecx, edi
mov dword [esp + 0x178], eax
sub edi, eax
sub eax, 2
mov dword [esp + 0x170], eax
mov eax, ecx
mov dword [esp + 0xfc], ebp
sub eax, esi
xor ebp, ebp
mov dword [esp + 0xa0], ebp
mov dword [esp + 0x16c], edi
mov dword [esp + 0xa8], eax
jmp 0x6fdf6950
mov edi, dword [esp + 0x114]
mov cl, dl
mov eax, dword [esp + 0x168]
movzx eax, word [eax + edi*2]
mov esi, eax
mov edi, eax
shr esi, cl
mov dword [esp + 0x15c], esi
shl esi, cl
mov cl, al
sub edi, esi
mov edx, esi
mov dword [esp + 0x158], edi
movzx edi, al
xor eax, eax
shr edi, 5
and edi, 1
mov esi, edi
xor esi, 1
shl esi, cl
shl edi, cl
mov dword [esp + 0x128], esi
mov dword [esp + 0x12c], edi
xor ecx, ecx
xor esi, esi
mov dword [esp + eax + 0x198], ecx
mov dword [esp + eax + 0x19c], esi
add eax, 8
cmp eax, 0x28
jb 0x6fdf69a2
mov ebp, dword [esp + 0x148]
test ebp, ebp
je 0x6fdf6a1b
mov esi, dword [esp + 0x158]
mov eax, dword [esp + 0xa0]
mov edi, dword [esp + 0x16c]
lea ecx, [edx + esi + 1]
mov edx, dword [esp + 0xa4]
shrd eax, edx, cl
shr edx, cl
test cl, 0x20
movzx ecx, byte [esp + 0x170]
cmovne eax, edx
mov edx, dword [esp + 0x15c]
add esi, edi
mov ebx, eax
shr ebx, cl
add edx, edi
sar edx, 0x1f
and edx, 2
and edx, ebx
mov ebx, esi
shr ebx, 0x1f
and eax, ebx
lea ebx, [edx + eax]
mov esi, dword [esp + 0x114]
mov ecx, dword [esp + 0x144]
mov edi, dword [esp + 0x1b0]
mov ebp, dword [esp + 0x1b4]
mov eax, esi
shl eax, 4
add eax, 0xf
lea edx, [eax*8]
mov dword [esp + 0x98], eax
mov eax, esi
mov esi, 0xf
shl eax, 5
add eax, ecx
mov dword [esp + 0xd8], edi
mov edi, dword [esp + 0x1b8]
mov dword [esp + 0xf8], eax
lea eax, [esp + edx + 0x5348]
mov dword [esp + 0xd0], eax
mov eax, dword [esp + 0x198]
mov dword [esp + 0xdc], ebp
mov ebp, dword [esp + 0x1bc]
mov dword [esp + 0x150], edi
mov edi, dword [esp + 0x1a0]
mov dword [esp + 0x3c], esi
mov dword [esp + 0x11c], eax
mov eax, dword [esp + 0xf0]
mov dword [esp + 0x154], ebp
mov ebp, dword [esp + 0x1a4]
mov dword [esp + 0xe8], edi
mov edi, dword [esp + 0x1a8]
add eax, 0xd0
mov dword [esp + 0xf4], eax
lea eax, [ebx*4]
mov dword [esp + 0x13c], eax
mov eax, dword [esp + 0x164]
mov dword [esp + 0xec], ebp
mov ebp, dword [esp + 0x1ac]
mov dword [esp + 0x120], edi
lea edi, [esp + 0x33c0]
add edi, edx
mov dword [esp + 0x54], edi
lea edi, [esp + 0x73c0]
dec eax
add edi, edx
mov dword [esp + 0x124], ebp
mov dword [esp + 0x7c], edi
mov dword [esp + 0x14c], eax
lea esi, [esi]
mov eax, dword [esp + 0xf8]
mov esi, dword [esp + 0x3c]
mov ecx, dword [esp + 0x108]
movzx edi, word [eax + esi*2]
mov eax, dword [esp + 0x93e4]
mov ebp, edi
lea eax, [eax + edi*2]
movsx ebx, word [eax]
mov dword [esp + 0xbc], eax
mov dword [esp + 0x8c], edi
mov eax, ebx
sar eax, 0x1f
mov esi, eax
xor esi, ebx
sub esi, eax
movzx eax, si
mov dword [esp + 0x60], esi
lea esi, [edi*4]
mov edi, dword [ecx + esi]
mov ecx, dword [esp + 0x10c]
mov dword [esp + 0x6c], eax
mov ecx, dword [ecx + esi]
sub ecx, edi
mov dword [esp + 0xac], ecx
mov ecx, edi
imul ecx, edi
mov eax, ecx
movzx ecx, byte [esp + 0x50]
cdq
shld edx, eax, cl
shl eax, cl
test cl, 0x20
je 0x6fdf6bb1
mov edx, eax
xor eax, eax
test ebp, ebp
mov dword [esp + 0x20], eax
setne al
and al, byte [esp + 0x112]
mov dword [esp + 0x24], edx
mov byte [esp + 0x48], al
je 0x6fdf6c11
mov ebp, dword [esp + 0xac]
mov eax, ebp
cdq
mov eax, dword [esp + 0x30]
imul edx, eax
mov eax, dword [esp + 0x34]
imul eax, ebp
lea ecx, [edx + eax]
mov eax, ebp
mul dword [esp + 0x30]
add edx, ecx
movzx ecx, byte [esp + 0xa8]
shrd eax, edx, cl
sar edx, cl
mov ebp, edx
sar ebp, 0x1f
test cl, 0x20
cmovne eax, edx
cmovne edx, ebp
sub dword [esp + 0x20], eax
sbb dword [esp + 0x24], edx
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0xd0]
mov ebp, dword [esp + 0x3c]
add dword [esp + 0x100], eax
mov edx, dword [esp + 0x24]
mov dword [ecx + ebp*8], eax
mov eax, dword [esp + 0x6c]
adc dword [esp + 0x104], edx
mov dword [ecx + ebp*8 + 4], edx
test eax, eax
je 0x6fdf6c84
mov eax, dword [esp + 0x9c]
shr eax, 0x1f
test al, al
je 0x6fdf6c84
mov ecx, dword [esp + 0x98]
cmp ecx, 0xf
setbe al
cmp al, byte [esp + 0x113]
mov dword [esp + 0x9c], ecx
mov ecx, dword [esp + 0x114]
sbb eax, eax
and eax, 2
mov dword [esp + 0x130], ecx
mov dword [esp + 0xb8], eax
mov ebp, dword [esp + 0x9c]
test ebp, ebp
js 0x6fdf76e3
mov ebx, dword [esp + 0xb8]
mov eax, dword [esp + 0xc8]
lea eax, [eax + ebx*4 + 0x36]
mov ebx, dword [esp + 0xf4]
lea eax, [ebx + eax*8]
mov ebx, dword [esp + 0x98]
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x54]
cmp dword [esp + 0x9c], ebx
mov dword [eax], 0xffffffff
mov dword [eax + 4], 0x7fffffff
je 0x6fdf7780
mov eax, dword [esp + 0x8c]
xor ebx, ebx
test eax, eax
je 0x6fdf6d50
cmp dword [esp + 0x93e8], 2
mov eax, dword [esp + 0x8c]
je 0x6fdf77b0
movzx ecx, byte [esp + 0x93e8]
mov edx, eax
and eax, 3
mov ebx, dword [esp + 0x13c]
mov ebp, dword [esp + 0x140]
shr edx, cl
mov ecx, edx
add eax, ebx
and ecx, 3
movzx ebx, byte [ecx + eax*4 + 0x70765bc0]
add ebx, ebp
cmp byte [esp + 0x113], 0
je 0x6fdf6d50
mov eax, dword [esp + 0x8c]
mov ecx, dword [esp + 0x14c]
and eax, ecx
or edx, eax
cmp edx, 3
jbe 0x6fdf6d50
add ebx, 3
nop
mov eax, dword [esp + 0xf0]
cmp dword [esp + 0x60], 2
mov ecx, dword [eax + ebx*8 + 0xe0]
jle 0x6fdf7724
mov edx, 0xffffffff
mov ebp, 0x7fffffff
mov dword [esp + 0x28], edx
mov dword [esp + 0x2c], ebp
mov eax, dword [eax + ebx*8 + 0xe4]
mov ebx, dword [esp + 0x8c]
mov edx, eax
sub edx, ecx
mov dword [esp + ebx*4 + 0x23c0], edx
mov edx, dword [esp + 0x60]
test edx, edx
je 0x6fdf7063
cmp dword [esp + 0x60], 2
mov ebp, 1
mov dword [esp + 0x58], ebp
jle 0x6fdf6dbe
mov ebx, dword [esp + 0x6c]
lea edx, [ebx - 1]
movzx ebx, dx
mov dword [esp + 0x58], ebx
mov ebp, dword [esp + 0x6c]
cmp dword [esp + 0x58], ebp
ja 0x6fdf7063
mov edx, dword [esp + 0xfc]
mov ebx, dword [esp + 0x118]
neg edx
lea ecx, [ebx - 8]
sar edx, 0x1f
inc edx
shr ecx, 0x1f
lea ebx, [ecx + edx*2]
mov edx, 0xd9
lea ecx, [ebx + ebx]
shr edx, cl
mov ecx, dword [esp + 0xb8]
and edx, 3
mov dword [esp + 0x60], edx
mov edx, dword [esp + 0xcc]
mov dword [esp + 0x90], ebx
and ebx, 1
mov dword [esp + 0x94], ebx
mov ebx, dword [esp + 0xac]
lea edx, [ecx + edx + 0x4e]
mov ecx, dword [esp + 0xf4]
lea ecx, [ecx + edx*8]
mov dword [esp + 0xd4], ecx
mov ecx, dword [esp + 0x138]
mov edx, dword [ecx + esi]
movzx ecx, byte [esp + 0x134]
shl edx, cl
mov ecx, dword [esp + 0x68]
mov dword [esp + 0x70], edx
mov edx, edi
sar edx, 0x1f
mov esi, edx
xor esi, edi
sub esi, edx
xor edx, ebx
shr edi, 0x1f
lea edi, [edi + edx]
imul ecx, eax
mov dword [esp + 0x74], esi
lea esi, [eax + 0x8000]
mul dword [esp + 0x64]
mov dword [esp + 0x78], esi
mov dword [esp + 0xac], edi
xor edi, edi
mov dword [esp + 0x6c], edi
add edx, ecx
shrd eax, edx, 8
mov dword [esp + 0xb0], eax
mov eax, dword [esp + 0x40]
sar edx, 8
mov dword [esp + 0xb4], edx
lea esi, [eax + 4]
inc eax
mov dword [esp + 0xc0], esi
mov dword [esp + 0xc4], eax
jmp 0x6fdf6ff1
mov edi, dword [esp + 0xc4]
add edx, edi
shl edx, 0xf
mov esi, dword [esp + 0x94]
test esi, esi
je 0x6fdf6ee3
mov eax, dword [esp + 0x80]
mov ebx, dword [eax + 4]
add edx, ebx
cmp dword [esp + 0x90], 3
mov dword [esp + 0x20], edx
je 0x6fdf7050
mov ebx, dword [esp + 0x70]
xor edi, edi
mov esi, dword [esp + 0x84]
movzx ecx, byte [esp + 0x88]
mov eax, dword [esp + 0x74]
imul ebx, ebp
add ebx, esi
sar ebx, cl
movzx ecx, byte [esp + 0x50]
sub eax, ebx
imul eax
shld edx, eax, cl
shl eax, cl
test cl, 0x20
mov ecx, dword [esp + 0x68]
cmovne edx, eax
cmovne eax, edi
mov esi, eax
mov edi, edx
mov eax, dword [esp + 0x78]
mov edx, dword [esp + 0x20]
add edx, eax
mov eax, edx
imul ecx, edx
mov dword [esp + 0x20], edx
mul dword [esp + 0x64]
add edx, ecx
shrd eax, edx, 8
sar edx, 8
add esi, eax
adc edi, edx
cmp byte [esp + 0x48], 0
je 0x6fdf6fa7
mov eax, dword [esp + 0xac]
mov ecx, dword [esp + 0x30]
add eax, ebx
cdq
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0x34]
mov ebx, eax
sar ebx, 0x1f
imul ecx, ebx
imul edx, eax
add ecx, edx
mul dword [esp + 0x30]
add edx, ecx
movzx ecx, byte [esp + 0xa8]
shrd eax, edx, cl
sar edx, cl
mov ebx, edx
sar ebx, 0x1f
test cl, 0x20
cmovne eax, edx
cmovne edx, ebx
sub esi, eax
sbb edi, edx
cmp edi, dword [esp + 0x2c]
jg 0x6fdf6fe1
jl 0x6fdf6fb5
cmp esi, dword [esp + 0x28]
jae 0x6fdf6fe1
mov eax, dword [esp + 0x54]
mov ebx, dword [esp + 0x7c]
mov edx, dword [esp + 0xb4]
mov dword [esp + 0x28], esi
mov dword [eax], esi
mov dword [eax + 4], edi
mov eax, dword [esp + 0xb0]
mov dword [ebx + 4], edx
mov dword [esp + 0x2c], edi
mov dword [esp + 0x6c], ebp
mov dword [ebx], eax
lea eax, [ebp - 1]
movzx ebp, ax
cmp dword [esp + 0x58], ebp
ja 0x6fdf74b5
mov edx, ebp
sub edx, dword [esp + 0x60]
js 0x6fdf7030
movzx ecx, byte [esp + 0x40]
shr edx, cl
cmp edx, 2
jbe 0x6fdf6ec0
xor eax, eax
cmp edx, 3
je 0x6fdf7016
sub edx, 2
bsr eax, edx
mov edi, dword [esp + 0xc0]
lea edx, [edi + eax*2]
shl edx, 0xf
jmp 0x6fdf6ecc
cmp ebp, 2
je 0x6fdf76c5
mov eax, dword [esp + 0x80]
mov eax, dword [eax]
mov dword [esp + 0x20], eax
jmp 0x6fdf6ef5
mov esi, dword [esp + 0xd4]
mov esi, dword [esi + 4]
add dword [esp + 0x20], esi
jmp 0x6fdf6ef5
mov eax, dword [esp + 0xbc]
mov edx, dword [esp + 0x2c]
mov word [eax], 0
mov eax, dword [esp + 0x28]
add dword [esp + 0xe0], eax
adc dword [esp + 0xe4], edx
xor ebx, ebx
mov eax, dword [esp + 0x80]
mov edi, dword [esp + 0x8c]
mov eax, dword [eax]
mov dword [esp + edi*4 + 0x3c0], eax
xor eax, eax
mov dword [esp + edi*4 + 0x13c0], eax
xor eax, eax
mov edi, dword [esp + 0x98]
test edi, 0xf
jne 0x6fdf74a0
test edi, edi
je 0x6fdf74a0
cmp dword [esp + 0x98], 0x10
sete al
cmp al, byte [esp + 0x113]
mov eax, dword [esp + 0xc8]
sbb edx, edx
xor edi, edi
and edx, 2
xor ebp, ebp
dec eax
xor ecx, ecx
shr eax, 0x1f
xor esi, esi
add eax, edx
mov dword [esp + 0xb8], eax
mov eax, dword [esp + 0x7c]
mov dword [esp + 0xfc], edi
mov edi, 1
mov dword [esp + 0x118], ebp
mov dword [esp + 0x40], ecx
mov edx, dword [eax + 4]
mov eax, dword [eax]
mov dword [esp + 0xcc], esi
mov dword [esp + 0xc8], edi
mov esi, dword [esp + 0x3c]
add dword [esp + 0xd8], eax
adc dword [esp + 0xdc], edx
test esi, esi
je 0x6fdf8160
test ebx, ebx
je 0x6fdf71c9
mov ebx, dword [esp + 0xa0]
mov edi, dword [esp + 0x128]
mov ebp, dword [esp + 0x12c]
mov ecx, dword [esp + 0xa4]
mov esi, dword [esp + 0x54]
or ebx, edi
mov edi, dword [esp + 0xe8]
mov dword [esp + 0xa0], ebx
or ecx, ebp
mov ebp, dword [esp + 0xec]
mov dword [esp + 0xa4], ecx
sub edi, eax
mov eax, edi
sbb ebp, edx
add eax, dword [esi]
mov edx, ebp
adc edx, dword [esi + 4]
mov dword [esp + 0xe8], eax
mov esi, dword [esp + 0xd0]
mov eax, dword [esp + 0x3c]
mov dword [esp + 0xec], edx
mov edi, dword [esi + eax*8 + 4]
mov esi, dword [esi + eax*8]
add dword [esp + 0x120], esi
adc dword [esp + 0x124], edi
add dword [esp + 0x11c], eax
dec dword [esp + 0x3c]
sub dword [esp + 0x54], 8
sub dword [esp + 0x7c], 8
mov eax, dword [esp + 0x3c]
dec dword [esp + 0x98]
inc eax
jne 0x6fdf6b30
mov ecx, dword [esp + 0xd8]
mov edx, dword [esp + 0x11c]
mov ebx, dword [esp + 0xdc]
mov eax, dword [esp + 0x130]
mov dword [esp + 0x20], ecx
mov esi, dword [esp + 0xe0]
mov dword [esp + 0x198], edx
mov edx, dword [esp + 0x150]
mov dword [esp + 0x1b0], ecx
mov ecx, dword [esp + 0x154]
mov dword [esp + 0x24], ebx
mov edi, dword [esp + 0xe4]
mov dword [esp + 0x1b4], ebx
mov ebx, dword [esp + 0x114]
mov dword [esp + 0x1b8], edx
mov edx, dword [esp + 0xe8]
mov dword [esp + 0x1bc], ecx
mov ecx, dword [esp + 0xec]
mov dword [esp + 0x3c], eax
mov ebp, dword [esp + 0xa4]
mov dword [esp + 0x1a0], edx
mov edx, dword [esp + 0x120]
mov dword [esp + 0x1a4], ecx
mov ecx, dword [esp + 0x124]
mov dword [esp + 0x1a8], edx
xor edx, edx
mov dword [esp + 0x1ac], ecx
xor ecx, ecx
cmp eax, 0xffffffff
mov dword [esp + ebx*8 + 0x1c0], edx
mov dword [esp + ebx*8 + 0x1c4], ecx
je 0x6fdf7460
test ebx, ebx
je 0x6fdf7460
cmp ebx, eax
je 0x6fdf7460
mov ecx, dword [esp + 0xa0]
mov ebx, dword [esp + 0xa4]
mov eax, dword [esp + 0x128]
mov edx, dword [esp + 0x12c]
and eax, ecx
and edx, ebx
or edx, eax
je 0x6fdf78a1
mov eax, dword [esp + 0x198]
test eax, eax
jne 0x6fdf7324
mov eax, dword [esp + 0x150]
mov edx, dword [esp + 0x154]
sub esi, eax
sbb edi, edx
sub dword [esp + 0x20], eax
sbb dword [esp + 0x24], edx
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x24]
mov dword [esp + 0x1b0], eax
mov dword [esp + 0x1b4], edx
movzx ecx, byte [esp + 0x148]
mov eax, dword [esp + 0x15c]
mov ebx, dword [esp + 0x158]
mov edx, dword [esp + 0xa4]
shl eax, cl
lea ecx, [ebx + eax + 1]
mov eax, dword [esp + 0xa0]
shrd eax, edx, cl
shr edx, cl
test cl, 0x20
mov ecx, dword [esp + 0x178]
cmovne eax, edx
mov edx, eax
mov ebx, eax
mov eax, dword [esp + 0x15c]
dec ecx
shr edx, cl
mov ecx, dword [esp + 0x16c]
add eax, ecx
sar eax, 0x1f
and edx, eax
mov eax, dword [esp + 0x158]
add eax, ecx
sar eax, 0x1f
and eax, ebx
or eax, edx
mov edx, dword [esp + 0x64]
and eax, 1
mov ebx, eax
mov eax, dword [esp + 0xf0]
mov eax, dword [eax + ebx*8 + 0xd0]
mov ecx, eax
sar ecx, 0x1f
imul ecx, edx
mov edx, dword [esp + 0x68]
imul edx, eax
add ecx, edx
mul dword [esp + 0x64]
add edx, ecx
mov ecx, dword [esp + 0xf0]
shrd eax, edx, 8
mov dword [esp + 0x48], eax
sar edx, 8
add eax, esi
mov dword [esp + 0x4c], edx
adc edx, edi
add eax, dword [esp + 0x1a8]
adc edx, dword [esp + 0x1ac]
sub eax, dword [esp + 0x1a0]
sbb edx, dword [esp + 0x1a4]
sub eax, dword [esp + 0x20]
sbb edx, dword [esp + 0x24]
mov dword [esp + 0x28], eax
mov eax, dword [ecx + ebx*8 + 0xd4]
mov dword [esp + 0x2c], edx
mov edx, dword [esp + 0x68]
mov ebx, eax
sar ebx, 0x1f
mov ecx, ebx
mov ebx, dword [esp + 0x64]
imul edx, eax
imul ecx, ebx
add ecx, edx
mul ebx
add edx, ecx
shrd eax, edx, 8
sar edx, 8
add esi, eax
adc edi, edx
cmp dword [esp + 0x2c], edi
jl 0x6fdf7969
jg 0x6fdf7443
cmp dword [esp + 0x28], esi
jb 0x6fdf7969
mov ebx, dword [esp + 0x114]
mov dword [esp + ebx*8 + 0x1c0], eax
mov dword [esp + ebx*8 + 0x1c4], edx
nop
lea esi, [esi]
dec dword [esp + 0x114]
add dword [esp + 0x160], 0xffffff80
mov eax, dword [esp + 0x114]
inc eax
je 0x6fdf7a78
mov ebx, dword [esp + 0x148]
mov dword [esp + 0xe0], esi
mov dword [esp + 0xe4], edi
mov edx, ebx
jmp 0x6fdf6950
add dword [esp + 0x118], eax
mov eax, dword [esp + 0x7c]
mov edx, dword [eax + 4]
mov eax, dword [eax]
jmp 0x6fdf7125
mov eax, dword [esp + 0x6c]
mov edi, dword [esp + 0xbc]
mov esi, dword [esp + 0x28]
add dword [esp + 0xe0], esi
movsx ebx, ax
mov word [edi], bx
mov edi, dword [esp + 0x2c]
adc dword [esp + 0xe4], edi
test eax, eax
je 0x6fdf7087
mov esi, eax
sub esi, dword [esp + 0x60]
js 0x6fdf77c9
mov eax, dword [esp + 0x40]
movzx eax, byte [eax + 0x70761400]
cmp eax, esi
jae 0x6fdf77c0
mov edx, esi
sub edx, eax
inc eax
bsr edx, edx
lea edx, [edx + edx + 1]
shl edx, 0xf
movzx ecx, byte [esp + 0x40]
mov edi, dword [esp + 0x40]
shr eax, cl
lea eax, [edi + eax - 7]
mov ecx, eax
sar ecx, 0x1f
and eax, ecx
mov ecx, dword [esp + 0x94]
add eax, 8
shl eax, 0xf
lea edi, [eax + edx]
test ecx, ecx
je 0x6fdf7548
mov eax, dword [esp + 0x80]
mov edx, dword [eax + 4]
add edi, edx
cmp dword [esp + 0x90], 3
je 0x6fdf7820
mov eax, dword [esp + 0x6c]
lea edx, [esi + 1]
inc eax
cmp edx, 0xffffffff
je 0x6fdf77f0
mov eax, dword [esp + 0x40]
movzx ecx, byte [eax + 0x70761400]
xor eax, eax
cmp ecx, edx
jae 0x6fdf7589
mov eax, edx
sub eax, ecx
bsr eax, eax
lea eax, [eax + eax + 1]
lea edx, [ecx + 1]
shl eax, 0xf
movzx ecx, byte [esp + 0x40]
shr edx, cl
mov ecx, dword [esp + 0x40]
lea edx, [ecx + edx - 7]
mov ecx, edx
sar ecx, 0x1f
and edx, ecx
mov ecx, dword [esp + 0x94]
add edx, 8
shl edx, 0xf
add eax, edx
test ecx, ecx
je 0x6fdf75be
mov ecx, dword [esp + 0x80]
mov edx, dword [ecx + 4]
add eax, edx
cmp dword [esp + 0x90], 3
je 0x6fdf7831
mov ecx, dword [esp + 0x8c]
sub eax, edi
mov dword [esp + ecx*4 + 0x3c0], eax
mov eax, dword [esp + 0x6c]
dec eax
je 0x6fdf7651
dec esi
mov edx, esi
js 0x6fdf7803
mov eax, dword [esp + 0x40]
movzx ecx, byte [eax + 0x70761400]
xor eax, eax
cmp esi, ecx
jbe 0x6fdf760e
mov eax, esi
sub eax, ecx
bsr eax, eax
lea eax, [eax + eax + 1]
lea edx, [ecx + 1]
shl eax, 0xf
movzx ecx, byte [esp + 0x40]
mov esi, dword [esp + 0x40]
shr edx, cl
lea edx, [esi + edx - 7]
mov esi, dword [esp + 0x94]
mov ecx, edx
sar ecx, 0x1f
and edx, ecx
add edx, 8
shl edx, 0xf
add eax, edx
test esi, esi
je 0x6fdf7643
mov esi, dword [esp + 0x80]
mov ecx, dword [esi + 4]
add eax, ecx
cmp dword [esp + 0x90], 3
je 0x6fdf7842
sub eax, edi
mov esi, dword [esp + 0x6c]
mov edi, dword [esp + 0x8c]
cmp dword [esp + 0x60], esi
mov dword [esp + edi*4 + 0x13c0], eax
ja 0x6fdf768a
cmp dword [esp + 0x40], 3
ja 0x6fdf768a
mov edx, dword [esp + 0x40]
mov eax, 3
mov cl, dl
shl eax, cl
cmp eax, dword [esp + 0x6c]
adc edx, 0
mov dword [esp + 0x40], edx
cmp dword [esp + 0x6c], 1
jbe 0x6fdf8173
mov edi, dword [esp + 0xcc]
xor ebp, ebp
inc dword [esp + 0xfc]
mov dword [esp + 0xc8], ebp
lea eax, [edi - 2]
shr eax, 0x1f
add edi, eax
mov eax, 1
mov dword [esp + 0xcc], edi
jmp 0x6fdf70a9
mov eax, dword [esp + 0xd4]
mov edx, dword [eax]
mov eax, dword [esp + 0x80]
mov ecx, dword [eax + 4]
add edx, ecx
mov dword [esp + 0x20], edx
jmp 0x6fdf6ef5
mov eax, dword [esp + 0x54]
mov edx, dword [esp + 0x24]
mov dword [eax], 0
mov dword [eax + 4], 0
mov eax, dword [esp + 0x7c]
mov dword [eax], 0
mov dword [eax + 4], 0
mov eax, dword [esp + 0x20]
add dword [esp + 0xe0], eax
adc dword [esp + 0xe4], edx
xor eax, eax
xor edx, edx
jmp 0x6fdf7125
mov eax, ecx
mov ebp, dword [esp + 0x64]
cdq
mov eax, dword [esp + 0x68]
imul edx, ebp
imul eax, ecx
add eax, edx
mov dword [esp + 0x28], eax
mov eax, ebp
mul ecx
mov ebp, dword [esp + 0x28]
add edx, ebp
mov ebp, dword [esp + 0x7c]
shrd eax, edx, 8
sar edx, 8
mov dword [ebp], eax
add eax, dword [esp + 0x20]
mov dword [ebp + 4], edx
mov ebp, dword [esp + 0x54]
adc edx, dword [esp + 0x24]
mov dword [esp + 0x28], eax
mov dword [ebp], eax
mov eax, dword [esp + 0xf0]
mov dword [esp + 0x2c], edx
mov dword [ebp + 4], edx
jmp 0x6fdf6d7b
mov eax, dword [esp + 0x8c]
xor edx, edx
mov ecx, 0xffffffff
mov ebx, 0x7fffffff
mov dword [esp + 0x28], ecx
mov dword [esp + 0x2c], ebx
mov dword [esp + eax*4 + 0x23c0], edx
xor eax, eax
jmp 0x6fdf6d94
movzx ebx, byte [eax + 0x70765c00]
jmp 0x6fdf6d50
mov eax, esi
xor edx, edx
jmp 0x6fdf7512
cmp dword [esp + 0x6c], 2
je 0x6fdf786d
mov eax, dword [esp + 0x6c]
lea edx, [esi + 1]
mov edi, dword [esp + 0x80]
inc eax
cmp edx, 0xffffffff
mov edi, dword [edi]
jne 0x6fdf7567
nop
cmp eax, 2
je 0x6fdf7853
mov eax, dword [esp + 0x80]
mov eax, dword [eax]
jmp 0x6fdf75cc
cmp eax, 2
je 0x6fdf7887
mov eax, dword [esp + 0x80]
mov eax, dword [eax]
jmp 0x6fdf7651
mov eax, dword [esp + 0xd4]
mov ebp, dword [eax + 4]
add edi, ebp
jmp 0x6fdf7556
mov ecx, dword [esp + 0xd4]
mov ebp, dword [ecx + 4]
add eax, ebp
jmp 0x6fdf75cc
mov esi, dword [esp + 0xd4]
mov edx, dword [esi + 4]
add eax, edx
jmp 0x6fdf7651
mov eax, dword [esp + 0xd4]
mov ecx, dword [esp + 0x80]
mov eax, dword [eax]
mov edx, dword [ecx + 4]
add eax, edx
jmp 0x6fdf75cc
mov eax, dword [esp + 0xd4]
mov edi, dword [eax]
mov eax, dword [esp + 0x80]
mov ecx, dword [eax + 4]
add edi, ecx
jmp 0x6fdf7556
mov eax, dword [esp + 0xd4]
mov esi, dword [esp + 0x80]
mov eax, dword [eax]
mov ebp, dword [esi + 4]
add eax, ebp
jmp 0x6fdf7651
mov ebp, dword [esp + 0x15c]
movzx ecx, byte [esp + 0x148]
mov ebx, dword [esp + 0x158]
mov edx, dword [esp + 0xa4]
mov eax, ebp
shl eax, cl
lea ecx, [ebx + eax + 1]
mov eax, dword [esp + 0xa0]
shrd eax, edx, cl
shr edx, cl
test cl, 0x20
mov ecx, dword [esp + 0x178]
cmovne eax, edx
mov edx, eax
mov ebx, eax
mov eax, ebp
dec ecx
shr edx, cl
mov ecx, dword [esp + 0x16c]
add eax, ecx
sar eax, 0x1f
and edx, eax
mov eax, dword [esp + 0x158]
add eax, ecx
sar eax, 0x1f
and eax, ebx
mov ebx, dword [esp + 0xf0]
or eax, edx
mov edx, dword [esp + 0x68]
and eax, 1
mov eax, dword [ebx + eax*8 + 0xd0]
mov ebx, eax
sar ebx, 0x1f
mov ecx, ebx
mov ebx, dword [esp + 0x64]
imul edx, eax
imul ecx, ebx
add ecx, edx
mul ebx
mov ebx, dword [esp + 0x114]
add edx, ecx
shrd eax, edx, 8
mov dword [esp + ebx*8 + 0x1c0], eax
sar edx, 8
add eax, esi
mov dword [esp + ebx*8 + 0x1c4], edx
adc edx, edi
sub eax, dword [esp + 0xd8]
sbb edx, dword [esp + 0xdc]
mov esi, eax
mov edi, edx
jmp 0x6fdf7460
mov edi, dword [esp + 0x12c]
mov esi, dword [esp + 0x128]
mov ecx, dword [esp + 0x144]
mov edx, edi
mov edi, dword [esp + 0x48]
mov eax, esi
not edx
not eax
and ebp, edx
and dword [esp + 0xa0], eax
mov eax, dword [esp + 0x114]
mov dword [esp + 0xa4], ebp
mov ebp, dword [esp + 0x4c]
mov dword [esp + eax*8 + 0x1c0], edi
mov edi, dword [esp + 0x17c]
mov dword [esp + eax*8 + 0x1c4], ebp
shl eax, 5
add ecx, eax
mov eax, dword [esp + 0x160]
lea eax, [eax + edi - 0x80]
lea edi, [esp + 0x53c0]
lea ebx, [edi + eax]
lea edi, [esp + 0x33c0]
lea esi, [edi + eax]
lea edi, [esp + 0x73c0]
add edi, eax
mov eax, 0xf
mov dword [esp + 0x20], edi
movzx edx, word [ecx + eax*2]
mov edi, dword [esp + 0x93e4]
lea edx, [edi + edx*2]
cmp word [edx], 0
je 0x6fdf7a23
mov edi, dword [ebx + eax*8]
mov ebp, dword [ebx + eax*8 + 4]
mov dword [esi + eax*8], edi
mov edi, dword [esp + 0x20]
mov dword [esi + eax*8 + 4], ebp
xor ebp, ebp
mov dword [edi + eax*8], 0
mov dword [edi + eax*8 + 4], ebp
dec eax
cmp eax, 0xffffffff
mov word [edx], 0
jne 0x6fdf79f0
mov esi, dword [esp + 0x28]
mov edi, dword [esp + 0x2c]
jmp 0x6fdf7460
xor eax, eax
xor esi, esi
mov dword [esp + 0x100], eax
xor eax, eax
xor edi, edi
mov dword [esp + 0x104], eax
mov eax, 0xffffffff
mov dword [esp + 0x9c], eax
mov eax, 0xffffffff
mov dword [esp + 0x3c], eax
xor eax, eax
mov dword [esp + 0xa0], eax
xor eax, eax
mov dword [esp + 0xa4], eax
mov eax, dword [esp + 0x93e0]
mov ebx, dword [esp + 0x93f0]
mov eax, dword [eax + 0x44]
cmp byte [eax + ebx], 1
mov eax, dword [esp + 0x93e0]
mov eax, dword [eax + 0x70]
je 0x6fdf7d30
cmp byte [esp + 0x113], 0
je 0x6fdf7d30
movzx eax, byte [eax + ebx]
test al, al
jne 0x6fdf7d3b
mov eax, dword [esp + 0xf0]
mov ebp, dword [esp + 0x64]
mov ecx, dword [eax + 0x3a8]
mov eax, ecx
cdq
mov eax, dword [esp + 0x68]
imul edx, ebp
imul eax, ecx
lea ebx, [edx + eax]
mov eax, ecx
mul ebp
add edx, ebx
mov ebx, dword [esp + 0xf0]
shrd eax, edx, 8
sar edx, 8
add eax, dword [esp + 0x100]
mov ecx, dword [ebx + 0x3ac]
adc edx, dword [esp + 0x104]
mov dword [esp + 0x40], eax
mov eax, ecx
mov dword [esp + 0x44], edx
cdq
mov eax, dword [esp + 0x68]
imul edx, ebp
imul eax, ecx
lea ebx, [edx + eax]
mov eax, ecx
mul ebp
add edx, ebx
shrd eax, edx, 8
sar edx, 8
add esi, eax
mov eax, dword [esp + 0x3c]
adc edi, edx
cmp eax, 0xffffffff
jne 0x6fdf7dd6
mov ebx, dword [esp + 0x9c]
test ebx, ebx
js 0x6fdf7d21
mov edi, dword [esp + 0x184]
xor ebx, ebx
xor edx, edx
mov dword [esp + 0x30], ebx
mov ebx, dword [esp + 0x9c]
xor eax, eax
mov esi, dword [esp + 0x93e4]
movzx ecx, word [edi + edx*2]
inc edx
cmp edx, ebx
mov dword [esp + 0x144], edi
mov word [esi + ecx*2], 0
jle 0x6fdf8080
mov edi, dword [esp + 0x93e0]
mov edx, dword [edi + 4]
mov edx, dword [edx + 4]
cmp byte [edx + 0x13], 0
je 0x6fdf7cf7
test al, al
je 0x6fdf7cf7
cmp dword [esp + 0x3c], 0xffffffff
je 0x6fdf7cf7
mov ebp, dword [esp + 0x93e4]
mov ecx, 1
mov dword [esp + 0x40], ecx
mov ebx, dword [esp + 0x3c]
mov esi, dword [esp + 0x144]
shl ebx, 4
lea eax, [ebx + ebx + 0x1e]
movzx edx, word [esi + eax]
movsx edi, word [ebp + edx*2]
test edi, edi
jne 0x6fdf8846
movzx edx, word [esi + eax - 2]
movsx edi, word [ebp + edx*2]
test edi, edi
jne 0x6fdf8838
movzx edx, word [esi + eax - 4]
movsx edi, word [ebp + edx*2]
test edi, edi
jne 0x6fdf882a
movzx edx, word [esi + eax - 6]
movsx edi, word [ebp + edx*2]
test edi, edi
jne 0x6fdf881c
movzx edx, word [esi + eax - 8]
movsx edi, word [ebp + edx*2]
test edi, edi
jne 0x6fdf880e
movzx edx, word [esi + eax - 0xa]
movsx edi, word [ebp + edx*2]
test edi, edi
jne 0x6fdf8800
movzx edx, word [esi + eax - 0xc]
movsx edi, word [ebp + edx*2]
test edi, edi
jne 0x6fdf87f2
movzx edx, word [esi + eax - 0xe]
movsx edi, word [ebp + edx*2]
test edi, edi
jne 0x6fdf87e4
movzx edx, word [esi + eax - 0x10]
movsx edi, word [ebp + edx*2]
test edi, edi
jne 0x6fdf87d6
movzx edx, word [esi + eax - 0x12]
movsx edi, word [ebp + edx*2]
test edi, edi
jne 0x6fdf87c8
movzx edx, word [esi + eax - 0x14]
movsx edi, word [ebp + edx*2]
test edi, edi
jne 0x6fdf87ba
movzx edx, word [esi + eax - 0x16]
movsx edi, word [ebp + edx*2]
test edi, edi
jne 0x6fdf87ac
movzx edx, word [esi + eax - 0x18]
movsx edi, word [ebp + edx*2]
test edi, edi
jne 0x6fdf879e
movzx edx, word [esi + eax - 0x1a]
movsx edi, word [ebp + edx*2]
test edi, edi
jne 0x6fdf8790
movzx edx, word [esi + eax - 0x1c]
movsx edi, word [ebp + edx*2]
test edi, edi
jne 0x6fdf8782
movzx edx, word [esi + ebx*2]
movsx edi, word [ebp + edx*2]
test edi, edi
jne 0x6fdf81f7
dec dword [esp + 0x3c]
mov eax, dword [esp + 0x3c]
inc eax
jne 0x6fdf7bb8
mov eax, dword [esp + 0x30]
add esp, 0x93cc
pop ebx
pop esi
pop edi
pop ebp
ret 0x18
mov esi, dword [esp + 0x9c]
xor edx, edx
xor eax, eax
cmp dword [esp + 0x58], esi
mov dword [esp + 0x30], edx
jle 0x6fdf806c
add esp, 0x93cc
xor eax, eax
pop ebx
pop esi
pop edi
pop ebp
ret 0x18
mov ebx, dword [esp + 0x93f0]
movzx eax, byte [eax + ebx]
mov ebx, dword [esp + 0x93ec]
mov ebp, dword [esp + 0x64]
lea edx, [ebx + ebx*4]
add eax, edx
mov ecx, dword [eax*4 + 0x70765c20]
mov eax, dword [esp + 0xf0]
mov ebx, dword [eax + ecx*8 + 0x370]
mov eax, ebx
cdq
mov eax, dword [esp + 0x68]
imul edx, ebp
imul eax, ebx
lea ebp, [edx + eax]
mov eax, ebx
mul dword [esp + 0x64]
add edx, ebp
shrd eax, edx, 8
sar edx, 8
add eax, dword [esp + 0x100]
adc edx, dword [esp + 0x104]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0xf0]
mov dword [esp + 0x44], edx
mov edx, dword [esp + 0x68]
mov eax, dword [eax + ecx*8 + 0x374]
mov ebx, eax
sar ebx, 0x1f
mov ecx, ebx
mov ebx, dword [esp + 0x64]
imul edx, eax
imul ecx, ebx
add ecx, edx
mul ebx
add edx, ecx
shrd eax, edx, 8
sar edx, 8
add esi, eax
mov eax, dword [esp + 0x3c]
adc edi, edx
cmp eax, 0xffffffff
je 0x6fdf7b36
mov ebx, dword [esp + 0x188]
xor ebp, ebp
mov dword [esp + 0x48], eax
mov dword [esp + 0x58], ebp
mov dword [esp + 0x28], esi
mov dword [esp + 0x6c], ebx
mov ebx, dword [esp + 0x184]
mov dword [esp + 0x2c], edi
mov dword [esp + 0x144], ebx
mov ebx, dword [esp + 0x18c]
mov dword [esp + 0x60], ebx
mov edi, dword [esp + 0x3c]
cmp eax, edi
je 0x6fdf7e5e
test eax, eax
je 0x6fdf7e5e
mov edi, dword [esp + 0x6c]
mov edx, dword [esp + 0xa4]
movzx ecx, word [edi + eax*2]
mov eax, dword [esp + 0xa0]
shrd eax, edx, cl
shr edx, cl
test cl, 0x20
cmovne eax, edx
and eax, 1
test eax, eax
mov eax, dword [esp + 0x48]
mov edx, dword [esp + eax*8 + 0x1c4]
mov eax, dword [esp + eax*8 + 0x1c0]
je 0x6fdf813e
sub dword [esp + 0x28], eax
sbb dword [esp + 0x2c], edx
mov eax, dword [esp + 0x48]
shl eax, 4
lea edi, [eax + 0xf]
dec eax
mov dword [esp + 0x20], eax
jmp 0x6fdf7fa1
movzx ecx, byte [esp + 0x93e8]
mov esi, ebx
shr esi, cl
mov eax, esi
shl eax, cl
sub ebx, eax
cmp dword [esp + 0x60], 2
je 0x6fdf80b0
mov eax, ebx
shr eax, 3
cmp ebx, 0x17
lea ecx, [eax + 6]
mov dword [esp + 0x54], ecx
ja 0x6fdf7ead
cmp ebx, 3
mov dword [esp + 0x54], ebx
ja 0x6fdf81e3
mov eax, esi
shr eax, 3
cmp esi, 0x17
lea edx, [eax + 6]
mov dword [esp + 0x30], edx
ja 0x6fdf7ecb
cmp esi, 3
ja 0x6fdf81a5
mov dword [esp + 0x30], esi
mov ecx, dword [esp + 0xf0]
mov eax, dword [esp + 0x30]
mov edx, ecx
mov eax, dword [ecx + eax*4 + 0x258]
mov ecx, dword [esp + 0x54]
add eax, dword [edx + ecx*4 + 0x230]
mov edx, 2
sub edx, ebx
sub ecx, 2
mov ebx, edx
mov edx, 2
shr ecx, 1
sub edx, esi
shl ecx, 0xf
sar ebx, 0x1f
and ecx, ebx
add ecx, eax
mov eax, dword [esp + 0x30]
sar edx, 0x1f
sub eax, 2
shr eax, 1
shl eax, 0xf
and eax, edx
add eax, ecx
mov esi, dword [esp + 0x68]
mov ecx, dword [esp + 0x28]
sub ecx, dword [esp + edi*8 + 0x73c0]
mov ebx, dword [esp + 0x2c]
sbb ebx, dword [esp + edi*8 + 0x73c4]
imul esi, eax
mul dword [esp + 0x64]
add edx, esi
shrd eax, edx, 8
sar edx, 8
add eax, ecx
adc edx, ebx
cmp edx, dword [esp + 0x44]
jg 0x6fdf7f67
jl 0x6fdf7f58
cmp eax, dword [esp + 0x40]
jae 0x6fdf7f67
lea esi, [edi + 1]
mov dword [esp + 0x58], esi
mov dword [esp + 0x40], eax
mov dword [esp + 0x44], edx
dec ebp
jg 0x6fdf7ff6
mov eax, dword [esp + 0x28]
sub eax, dword [esp + edi*8 + 0x33c0]
mov edx, dword [esp + 0x2c]
sbb edx, dword [esp + edi*8 + 0x33c4]
add eax, dword [esp + edi*8 + 0x53c0]
adc edx, dword [esp + edi*8 + 0x53c4]
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], edx
dec edi
cmp edi, dword [esp + 0x20]
je 0x6fdf7fe5
cmp edi, dword [esp + 0x9c]
jg 0x6fdf7f9a
mov eax, dword [esp + 0x144]
movzx ebx, word [eax + edi*2]
mov eax, dword [esp + 0x93e4]
movsx ebp, word [eax + ebx*2]
test ebp, ebp
jne 0x6fdf7e72
mov eax, dword [esp + edi*8 + 0x73c0]
sub dword [esp + 0x28], eax
mov edx, dword [esp + edi*8 + 0x73c4]
sbb dword [esp + 0x2c], edx
dec edi
cmp edi, dword [esp + 0x20]
jne 0x6fdf7fa1
dec dword [esp + 0x48]
mov eax, dword [esp + 0x48]
cmp eax, 0xffffffff
jne 0x6fdf7e0c
mov eax, dword [esp + 0x58]
test eax, eax
jle 0x6fdf7d08
mov edi, dword [esp + 0x174]
mov ebp, dword [edi + 0x78]
mov edi, dword [esp + 0x144]
lea eax, [edi + eax*2]
mov esi, edi
mov dword [esp + 0x20], eax
xor edi, edi
movzx ebx, word [esi]
xor edx, edx
mov eax, dword [esp + 0x93e4]
lea ecx, [eax + ebx*2]
movsx eax, word [ecx]
test eax, eax
setne dl
add esi, 2
add edi, edx
mov edx, dword [ebp + ebx*4]
sar edx, 0x1f
movzx edx, dx
xor eax, edx
sub eax, edx
cmp esi, dword [esp + 0x20]
mov word [ecx], ax
jne 0x6fdf801e
cmp edi, 1
mov esi, dword [esp + 0x9c]
seta al
cmp dword [esp + 0x58], esi
mov dword [esp + 0x30], edi
jg 0x6fdf7b7e
mov ebx, esi
mov edx, dword [esp + 0x58]
mov esi, dword [esp + 0x93e4]
mov edi, dword [esp + 0x144]
movzx ecx, word [edi + edx*2]
inc edx
cmp edx, ebx
mov word [esi + ecx*2], 0
jle 0x6fdf8080
jmp 0x6fdf7b7e
mov edi, dword [esp + 0x134]
mov ecx, eax
sub ecx, edi
dec ecx
shl esi, cl
mov dword [esp + 0x84], esi
jmp 0x6fdf67a4
mov eax, esi
shr eax, 3
cmp esi, 0x17
lea ecx, [eax + 6]
mov dword [esp + 0x54], ecx
ja 0x6fdf80ce
cmp esi, 3
ja 0x6fdf81b9
mov dword [esp + 0x54], esi
mov eax, ebx
shr eax, 3
cmp ebx, 0x17
lea edx, [eax + 6]
mov dword [esp + 0x30], edx
ja 0x6fdf80ee
cmp ebx, 3
ja 0x6fdf81cd
mov dword [esp + 0x30], ebx
mov edx, ebx
mov eax, dword [esp + 0xf0]
mov ecx, dword [eax + edx*4 + 0x258]
mov edx, dword [esp + 0x54]
add ecx, dword [eax + edx*4 + 0x230]
lea eax, [edx - 2]
shr eax, 1
shl eax, 0xf
mov edx, eax
mov eax, 2
sub eax, esi
sar eax, 0x1f
and eax, edx
mov edx, dword [esp + 0x30]
add ecx, eax
mov eax, 2
sub eax, ebx
sar eax, 0x1f
sub edx, 2
shr edx, 1
shl edx, 0xf
and eax, edx
add eax, ecx
jmp 0x6fdf7f1c
sub dword [esp + 0x28], eax
sbb dword [esp + 0x2c], edx
dec dword [esp + 0x48]
mov eax, dword [esp + 0x48]
cmp eax, 0xffffffff
jne 0x6fdf7e0c
jmp 0x6fdf7ff6
mov dword [esp + 0x150], eax
mov dword [esp + 0x154], edx
jmp 0x6fdf713f
test byte [esp + 0x6c], 1
mov eax, 1
je 0x6fdf70a9
mov edi, dword [esp + 0xc8]
lea edx, [edi - 1]
cmp edx, 1
setbe dl
cmp dl, 1
sbb edi, 0xffffffff
mov dword [esp + 0xc8], edi
jmp 0x6fdf70a9
lea ecx, [eax + 1]
mov edx, esi
shr edx, cl
lea eax, [edx + eax*2 + 2]
mov dword [esp + 0x30], eax
jmp 0x6fdf7ecb
lea ecx, [eax + 1]
mov edx, esi
shr edx, cl
lea eax, [edx + eax*2 + 2]
mov dword [esp + 0x54], eax
jmp 0x6fdf80ce
lea ecx, [eax + 1]
mov edx, ebx
shr edx, cl
lea eax, [edx + eax*2 + 2]
mov dword [esp + 0x30], eax
mov edx, eax
jmp 0x6fdf80ee
lea ecx, [eax + 1]
mov edx, ebx
shr edx, cl
lea eax, [edx + eax*2 + 2]
mov dword [esp + 0x54], eax
jmp 0x6fdf7ead
xor esi, esi
mov dword [esp + 0x20], esi
mov esi, dword [esp + 0x144]
lea esi, [esi + eax - 0x1e]
movzx edx, word [esi]
mov dword [esp + 0x60], esi
movsx edx, word [ebp + edx*2]
test edx, edx
jne 0x6fdf8760
xor ecx, ecx
inc ecx
movzx edx, word [esi + ecx*2]
movsx edx, word [ebp + edx*2]
test edx, edx
je 0x6fdf821e
mov esi, dword [esp + 0x20]
mov dword [esp + 0x54], ecx
sub esi, ecx
cmp esi, 3
jle 0x6fdf86f7
test edx, edx
mov ecx, dword [esp + 0x20]
setle dl
cmp dword [esp + 0x54], ecx
movzx esi, dl
mov dword [esp + 0x78], esi
jg 0x6fdf8744
mov esi, dword [esp + 0x54]
lea ecx, [ebx + ecx + 1]
lea edx, [ebx + esi]
mov esi, dword [esp + 0x144]
xor ebx, ebx
lea edx, [esi + edx*2]
lea esi, [esi + ecx*2]
movzx ecx, word [edx]
add edx, 2
movsx ecx, word [ebp + ecx*2]
add ebx, ecx
cmp edx, esi
jne 0x6fdf8273
and ebx, 1
cmp dword [esp + 0x78], ebx
je 0x6fdf86f7
mov edx, dword [esp + 0x40]
mov esi, dword [esp + 0x20]
test edx, edx
mov dword [esp + 0x28], esi
jne 0x6fdf82ba
mov edi, dword [esp + 0x144]
movzx eax, word [edi + eax]
movsx edi, word [ebp + eax*2]
mov eax, 0xf
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x174]
xor esi, esi
mov dword [esp + 0x93e4], ebp
mov ebp, edi
mov dword [esp + 0x74], esi
mov eax, dword [eax + 0x78]
mov dword [esp + 0x7c], eax
mov eax, 0xffffffff
mov dword [esp + 0x70], eax
mov eax, 0xffffffff
mov dword [esp + 0x90], eax
mov eax, 0x7fffffff
mov dword [esp + 0x94], eax
movzx eax, byte [esp + 0x40]
and al, 1
mov byte [esp + 0x98], al
jmp 0x6fdf84a8
mov ebx, dword [esp + 0x40]
mov ebp, esi
xor esi, esi
mov eax, dword [esp + 0x84]
movzx ecx, byte [esp + 0x88]
mov edi, dword [esp + 0x68]
add ebp, ebx
add eax, ebp
sar eax, cl
mov ecx, dword [esp + 0x6c]
sub ecx, eax
mov eax, ecx
imul ecx
movzx ecx, byte [esp + 0x50]
shld edx, eax, cl
shl eax, cl
test cl, 0x20
cmovne edx, eax
cmovne eax, esi
mov esi, dword [esp + 0x64]
sub eax, dword [esp + 0x58]
sbb edx, dword [esp + 0x5c]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0x44], edx
mov ecx, dword [esp + eax*4 + 0x3c0]
mov eax, ecx
cdq
mov eax, ecx
imul edi, ecx
movzx ecx, byte [esp + 0x88]
imul edx, esi
add edx, edi
mov edi, edx
mul esi
add edx, edi
shrd eax, edx, 8
mov esi, eax
mov eax, ebx
sar edx, 8
add esi, dword [esp + 0x40]
mov edi, edx
adc edi, dword [esp + 0x44]
add eax, eax
sub ebp, eax
mov eax, dword [esp + 0x84]
mov dword [esp + 0x40], esi
mov dword [esp + 0x44], edi
add eax, ebp
sar eax, cl
mov ecx, dword [esp + 0x6c]
sub ecx, eax
mov eax, dword [esp + 0x48]
cmp dword [esp + 0x8c], 1
mov edi, ecx
sete byte [esp + 0x6c]
mov ebp, dword [esp + eax*4 + 0x13c0]
mov eax, edi
movzx ecx, byte [esp + 0x6c]
imul edi
test cl, cl
movzx ecx, byte [esp + 0x50]
je 0x6fdf86b1
shld edx, eax, cl
xor ebx, ebx
shl eax, cl
test cl, 0x20
cmovne edx, eax
cmovne eax, ebx
mov ebx, dword [esp + 0x64]
sub eax, dword [esp + 0x58]
sbb edx, dword [esp + 0x5c]
mov esi, eax
mov eax, dword [esp + 0x48]
mov edi, edx
mov edx, dword [esp + eax*4 + 0x23c0]
sub ebp, edx
mov edx, dword [esp + 0x68]
lea eax, [ebp - 0x8000]
mov ecx, eax
sar ecx, 0x1f
imul edx, eax
imul ecx, ebx
add ecx, edx
mul ebx
add edx, ecx
shrd eax, edx, 8
sar edx, 8
add eax, esi
mov esi, dword [esp + 0x20]
adc edx, edi
cmp dword [esp + 0x28], esi
jne 0x6fdf8454
cmp byte [esp + 0x98], 0
je 0x6fdf8454
add eax, 0xfffe0000
adc edx, 0xffffffff
cmp edx, dword [esp + 0x44]
jg 0x6fdf86a7
jl 0x6fdf846a
cmp eax, dword [esp + 0x40]
ja 0x6fdf86a7
cmp byte [esp + 0x6c], 0
nop
je 0x6fdf8702
mov esi, dword [esp + 0x28]
cmp dword [esp + 0x54], esi
jne 0x6fdf8702
dec dword [esp + 0x28]
mov eax, dword [esp + 0x28]
cmp eax, 0xffffffff
je 0x6fdf8646
mov edi, dword [esp + 0x60]
movzx eax, word [edi + eax*2]
mov edi, dword [esp + 0x93e4]
movsx ebp, word [edi + eax*2]
mov edi, dword [esp + 0x28]
mov edx, ebp
mov eax, dword [esp + 0x60]
sar edx, 0x1f
mov ecx, dword [esp + 0x138]
mov esi, edx
xor esi, ebp
sub esi, edx
movzx eax, word [eax + edi*2]
mov ebx, esi
mov edi, dword [esp + 0x7c]
mov dword [esp + 0x8c], esi
mov dword [esp + 0x48], eax
shl eax, 2
mov edi, dword [edi + eax]
mov eax, dword [ecx + eax]
movzx ecx, byte [esp + 0x134]
mov edx, edi
sar edx, 0x1f
shl eax, cl
movzx ecx, byte [esp + 0x88]
mov esi, eax
imul esi, ebx
xor ebx, ebx
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x84]
mov dword [esp + 0x80], edi
xor edi, edx
sub edi, edx
mov dword [esp + 0x6c], edi
add eax, esi
sar eax, cl
movzx ecx, byte [esp + 0x50]
sub edi, eax
mov eax, edi
imul edi
shld edx, eax, cl
shl eax, cl
test cl, 0x20
cmovne edx, eax
cmovne eax, ebx
test ebp, ebp
mov dword [esp + 0x58], eax
mov dword [esp + 0x5c], edx
jne 0x6fdf830b
mov edi, dword [esp + 0x28]
cmp dword [esp + 0x54], edi
jle 0x6fdf8563
mov eax, dword [esp + 0x80]
shr eax, 0x1f
cmp eax, dword [esp + 0x78]
jne 0x6fdf8484
mov eax, dword [esp + 0x40]
xor ebx, ebx
mov edx, dword [esp + 0x84]
movzx ecx, byte [esp + 0x88]
mov edi, dword [esp + 0x6c]
add eax, edx
sar eax, cl
movzx ecx, byte [esp + 0x50]
sub edi, eax
mov eax, edi
imul edi
shld edx, eax, cl
shl eax, cl
test cl, 0x20
cmovne edx, eax
cmovne eax, ebx
mov ebx, dword [esp + 0x64]
sub eax, dword [esp + 0x58]
sbb edx, dword [esp + 0x5c]
mov esi, eax
mov eax, dword [esp + 0x48]
mov edi, edx
mov edx, dword [esp + eax*4 + 0x3c0]
mov eax, dword [esp + eax*4 + 0x23c0]
lea eax, [edx + eax + 0x8000]
mov edx, dword [esp + 0x68]
mov ecx, eax
sar ecx, 0x1f
imul ecx, ebx
imul edx, eax
add ecx, edx
mul ebx
add edx, ecx
shrd eax, edx, 8
sar edx, 8
add esi, eax
adc edi, edx
mov eax, 1
mov dword [esp + 0x40], esi
mov dword [esp + 0x44], edi
mov edi, dword [esp + 0x94]
cmp dword [esp + 0x44], edi
jg 0x6fdf8484
jl 0x6fdf8613
mov edi, dword [esp + 0x90]
cmp dword [esp + 0x40], edi
jae 0x6fdf8484
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0x40]
dec dword [esp + 0x28]
mov esi, dword [esp + 0x48]
mov edx, dword [esp + 0x44]
mov dword [esp + 0x90], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x70], esi
mov dword [esp + 0x94], edx
cmp eax, 0xffffffff
jne 0x6fdf8495
mov eax, dword [esp + 0x70]
mov ebp, dword [esp + 0x93e4]
lea edx, [ebp + eax*2]
movsx eax, word [edx]
movzx ebx, ax
lea ecx, [ebx + 0x7fff]
cmp cx, 0xfffd
jbe 0x6fdf8714
mov ecx, eax
sar ecx, 0x1f
xor eax, ecx
sub eax, ecx
mov ecx, 0xffff
dec eax
sete al
movzx eax, al
sub dword [esp + 0x30], eax
mov eax, dword [esp + 0x7c]
mov edi, dword [esp + 0x70]
mov eax, dword [eax + edi*4]
test eax, eax
js 0x6fdf8734
add ecx, ebx
xor edi, edi
mov word [edx], cx
mov dword [esp + 0x40], edi
jmp 0x6fdf7ce8
mov eax, 1
jmp 0x6fdf85ef
shld edx, eax, cl
xor esi, esi
mov ebx, dword [esp + 0x64]
shl eax, cl
test cl, 0x20
cmovne edx, eax
cmovne eax, esi
sub eax, dword [esp + 0x58]
sbb edx, dword [esp + 0x5c]
mov esi, eax
mov eax, ebp
mov edi, edx
cdq
mov eax, dword [esp + 0x68]
imul edx, ebx
imul eax, ebp
lea ecx, [edx + eax]
mov eax, ebp
mul ebx
add edx, ecx
shrd eax, edx, 8
sar edx, 8
add eax, esi
adc edx, edi
jmp 0x6fdf8454
xor ebx, ebx
mov dword [esp + 0x40], ebx
jmp 0x6fdf7ce8
mov dword [esp + 0x40], eax
mov eax, 0xffffffff
mov dword [esp + 0x44], edx
jmp 0x6fdf85ef
test eax, eax
jne 0x6fdf874b
mov eax, dword [esp + 0x7c]
mov edi, dword [esp + 0x70]
inc dword [esp + 0x30]
movzx ecx, word [esp + 0x74]
mov eax, dword [eax + edi*4]
test eax, eax
jns 0x6fdf8697
sub ebx, ecx
xor esi, esi
mov word [edx], bx
mov dword [esp + 0x40], esi
jmp 0x6fdf7ce8
xor ebx, ebx
jmp 0x6fdf8287
mov edi, dword [esp + 0x74]
cmp edi, 0xffffffff
je 0x6fdf866b
movzx ecx, di
jmp 0x6fdf8684
xor ecx, ecx
cmp dword [esp + 0x20], 3
mov dword [esp + 0x54], ecx
jle 0x6fdf86f7
test edx, edx
mov ecx, dword [esp + 0x20]
setle dl
movzx esi, dl
mov dword [esp + 0x78], esi
jmp 0x6fdf8259
mov edx, 1
mov dword [esp + 0x20], edx
jmp 0x6fdf81fd
mov ecx, 2
mov dword [esp + 0x20], ecx
jmp 0x6fdf81fd
mov esi, 3
mov dword [esp + 0x20], esi
jmp 0x6fdf81fd
mov edx, 4
mov dword [esp + 0x20], edx
jmp 0x6fdf81fd
mov ecx, 5
mov dword [esp + 0x20], ecx
jmp 0x6fdf81fd
mov esi, 6
mov dword [esp + 0x20], esi
jmp 0x6fdf81fd
mov edx, 7
mov dword [esp + 0x20], edx
jmp 0x6fdf81fd
mov ecx, 8
mov dword [esp + 0x20], ecx
jmp 0x6fdf81fd
mov esi, 9
mov dword [esp + 0x20], esi
jmp 0x6fdf81fd
mov edx, 0xa
mov dword [esp + 0x20], edx
jmp 0x6fdf81fd
mov ecx, 0xb
mov dword [esp + 0x20], ecx
jmp 0x6fdf81fd
mov esi, 0xc
mov dword [esp + 0x20], esi
jmp 0x6fdf81fd
mov edx, 0xd
mov dword [esp + 0x20], edx
jmp 0x6fdf81fd
mov ecx, 0xe
mov dword [esp + 0x20], ecx
jmp 0x6fdf81fd
mov esi, 0xf
mov dword [esp + 0x20], esi
jmp 0x6fdf81fd