Function at 0x668f30
Capabilities:
Encrypt data using speck

Disassembly:
push ecx
mov eax, dword [0x91d3f0]
mov cx, word [eax + 0x8c]
mov word [eax + 0x8e], cx
mov eax, dword [0x91d3f0]
mov edx, dword [eax + 0x58]
mov dword [eax + 0x1428], edx
mov eax, dword [0x91d3f0]
mov ecx, dword [eax + 0x10]
mov edx, dword [0x91cfa4]
mov dword [edx + 0x28], ecx
mov eax, dword [0x91d3f0]
mov ecx, dword [eax + 0x14]
mov edx, dword [0x91cfa4]
mov dword [edx + 0x2c], ecx
mov eax, dword [0x91d3f0]
mov ecx, dword [eax + 0x18]
mov edx, dword [0x91cfa4]
push esi
push edi
push 0x37
mov dword [edx + 0x30], ecx
call fcn.00657090
add esp, 4
call fcn.00566fd0
mov eax, dword [0x91cfa4]
xor edi, edi
mov word [eax + 0xc], di
mov ecx, dword [0x91cfa8]
mov al, byte [ecx + 0x64]
mov edx, dword [0xeebb14]
mov ecx, dword [0x91cfa4]
cmp al, 5
movzx eax, byte [edx + 0x87158c]
je 0x667339
shr eax, 2
mov dword [ecx + 8], eax
jmp 0x66736f
shl eax, 1
mov dword [ecx + 8], eax
mov edx, dword [0x91cfa4]
mov byte [edx + 0x611], 0
call fcn.00865520
test eax, eax
je 0x667366
call fcn.0052efb0
test eax, eax
je 0x66736f
call fcn.00865020
test eax, eax
jne 0x66736f
mov eax, dword [0x91cfa4]
mov byte [eax + 0x24], 0xc
mov ecx, dword [0x91cfa4]
mov al, byte [ecx + 0x24]
cmp al, 0xff
je 0x667389
movzx eax, al
cdq
mov ecx, 0x17
idiv ecx
jmp 0x66738e
mov edx, 1
imul edx, edx, 0x4c0
add edx, 0xd92230
mov esi, edx
mov edx, dword [0x91cfa8]
cmp byte [edx + 0x64], 5
jne 0x667413
call fcn.0052efb0
test eax, eax
je 0x6673be
call fcn.00865020
test eax, eax
jne 0x6673be
xor edi, edi
jmp 0x667413
call fcn.00865520
test eax, eax
je 0x6673f8
mov cl, byte [esi + 0xd9]
xor eax, eax
test cl, cl
mov ecx, dword [0x91d3f0]
sete al
lea eax, [eax + eax - 1]
mov dword [esp + 8], eax
fild dword [esp + 8]
fmul dword [ecx + 0x10]
fcomp dword [0x879dc4]
fnstsw ax
test ah, 0x41
jne 0x667413
jmp 0x66740e
mov edx, dword [0x91d3f0]
fld dword [edx + 0x10]
fcomp dword [0x879dc4]
fnstsw ax
test ah, 5
jp 0x667413
mov edi, 1
mov cl, byte [esi + 0xd9]
xor eax, eax
test cl, cl
mov ecx, dword [0x91d3f0]
sete al
lea eax, [eax + eax - 1]
mov dword [esp + 8], eax
fild dword [esp + 8]
fmul dword [ecx + 0x10]
fcomp dword [0x879dc4]
fnstsw ax
test ah, 0x41
jne 0x6675e7
mov edx, dword [0x91cfa8]
mov al, byte [edx + 0x64]
cmp al, 5
jne 0x6674a7
test edi, edi
je 0x6675e7
cmp al, al
jne 0x6674a7
call fcn.00865520
test eax, eax
je 0x667486
mov eax, dword [0x91cfa4]
xor ecx, ecx
mov cl, byte [eax + 0x24]
push ecx
call fcn.0063dd40
mov edx, dword [0x91cfa4]
add esp, 4
mov byte [edx + 0x1a], al
jmp 0x6674cb
mov esi, 0xd926f0
xor eax, eax
lea ecx, [ecx]
mov cl, byte [esi + 1]
test cl, cl
jne 0x6674a3
inc eax
add esi, 0x4c0
cmp eax, 0xb
jl 0x667490
mov al, byte [esi]
jmp 0x6674c2
push 1
call fcn.006a78a0
mov edx, dword [0x91cfa4]
xor eax, eax
mov al, byte [edx + 0x24]
push eax
call fcn.0063dd40
add esp, 8
mov ecx, dword [0x91cfa4]
mov byte [ecx + 0x1a], al
push 9
push 2
call fcn.0042a8c0
add esp, 8
call fcn.00635a70
mov ecx, dword [0x91cfa4]
mov dl, byte [ecx + 0x45]
mov byte [0xeb2c2c], dl
xor edi, edi
lea ecx, [ecx]
mov al, byte [ecx + edi + 0xf]
cmp al, 0xff
je 0x66753e
movzx eax, al
cdq
mov esi, 0x17
idiv esi
xor eax, eax
mov esi, edx
imul esi, esi, 0x4c0
add esi, 0xd92230
mov dl, byte [esi + 0xd9]
test dl, dl
sete al
lea eax, [eax + eax - 1]
mov dword [esp + 8], eax
fild dword [esp + 8]
fmul dword [ecx + 0x28]
fcomp dword [0x879dc4]
fnstsw ax
test ah, 0x41
je 0x6675de
mov al, byte [ecx + edi + 0x10]
cmp al, 0xff
je 0x667588
movzx eax, al
cdq
mov esi, 0x17
idiv esi
mov esi, edx
imul esi, esi, 0x4c0
add esi, 0xd92230
mov al, byte [esi + 0xd9]
xor edx, edx
test al, al
sete dl
lea edx, [edx + edx - 1]
mov dword [esp + 8], edx
fild dword [esp + 8]
fmul dword [ecx + 0x28]
fcomp dword [0x879dc4]
fnstsw ax
test ah, 0x41
je 0x6675de
mov al, byte [ecx + edi + 0x11]
cmp al, 0xff
je 0x6675d2
movzx eax, al
cdq
mov esi, 0x17
idiv esi
xor eax, eax
mov esi, edx
imul esi, esi, 0x4c0
add esi, 0xd92230
mov dl, byte [esi + 0xd9]
test dl, dl
sete al
lea eax, [eax + eax - 1]
mov dword [esp + 8], eax
fild dword [esp + 8]
fmul dword [ecx + 0x28]
fcomp dword [0x879dc4]
fnstsw ax
test ah, 0x41
je 0x6675de
add edi, 3
cmp edi, 3
jl 0x6674f0
mov dl, byte [esi]
pop edi
mov byte [ecx + 0x1b], dl
pop esi
pop ecx
ret
push 4
push 2
call fcn.0042a8c0
add esp, 8
call fcn.00635a70
mov eax, dword [0x91cfa4]
mov cl, byte [eax + 0x45]
mov edx, dword [0x91cfa8]
mov byte [0xeb2c2c], cl
cmp byte [edx + 0x64], 5
je 0x667623
push 2
call fcn.006a78a0
push 7
call fcn.0061d490
add esp, 8
mov eax, dword [0x91cfa4]
xor ecx, ecx
mov cl, byte [eax + 0x24]
push ecx
call fcn.0063dd40
mov edx, dword [0x91cfa4]
mov byte [edx + 0x1a], al
mov eax, dword [0x91cfa4]
mov al, byte [eax + 0x1a]
add esp, 4
cmp al, 0xff
je 0x667658
movzx eax, al
cdq
mov ecx, 0x17
idiv ecx
jmp 0x66765d
mov edx, 1
imul edx, edx, 0x4c0
add edx, 0xd92230
push edx
call fcn.00770b70
mov edx, dword [0x91cfa4]
mov byte [edx + 0x1a], al
mov ecx, dword [0x91cfa4]
mov al, byte [ecx + 0x1a]
add esp, 4
cmp al, 0xff
je 0x667695
movzx eax, al
cdq
mov esi, 0x17
idiv esi
jmp 0x66769a
mov edx, 1
imul edx, edx, 0x4c0
add edx, 0xd92230
movzx eax, byte [edx + 0xd8]
imul eax, eax, 0x2970
lea eax, [eax + 0xed5aa9]
push ebx
inc byte [eax]
mov esi, 1
mov al, byte [ecx + esi + 0xf]
cmp al, 0xff
je 0x667709
movzx eax, al
cdq
mov edi, 0x17
idiv edi
xor eax, eax
imul edx, edx, 0x4c0
add edx, 0xd92230
mov bl, byte [edx + 0xd9]
test bl, bl
sete al
lea eax, [eax + eax - 1]
mov dword [esp + 0xc], eax
fild dword [esp + 0xc]
fmul dword [ecx + 0x28]
fcomp dword [0x879dc4]
fnstsw ax
test ah, 0x41
je 0x66775d
mov al, byte [ecx + esi + 0x10]
cmp al, 0xff
je 0x667751
movzx eax, al
cdq
mov edi, 0x17
idiv edi
xor eax, eax
imul edx, edx, 0x4c0
add edx, 0xd92230
mov bl, byte [edx + 0xd9]
test bl, bl
sete al
lea eax, [eax + eax - 1]
mov dword [esp + 0xc], eax
fild dword [esp + 0xc]
fmul dword [ecx + 0x28]
fcomp dword [0x879dc4]
fnstsw ax
test ah, 0x41
je 0x66775d
add esi, 2
cmp esi, 3
jl 0x6676c1
mov dl, byte [edx]
pop ebx
pop edi
mov byte [ecx + 0x1b], dl
pop esi
pop ecx
ret
mov eax, dword [0x91cfa4]
mov cl, byte [eax + 0xa5]
sub esp, 8
push edi
xor edi, edi
test cl, cl
jne 0x669ab1
push ebx
push esi
call fcn.00667e90
mov esi, dword [0x91d3f0]
fld dword [esi + 0x10]
call fcn.0043bd30
cmp eax, edi
jg 0x668f64
neg eax
mov dword [esp + 0xc], eax
fild dword [esp + 0xc]
fst dword [esp + 0x10]
fld dword [esi + 0x18]
call fcn.0043bd30
cmp eax, edi
jg 0x668f7e
neg eax
mov dword [esp + 0xc], eax
fild dword [esp + 0xc]
fstp dword [esp + 0xc]
fcomp dword [0x8cb938]
fnstsw ax
test ah, 0x41
jne 0x668fad
mov ecx, dword [0x91d320]
mov al, byte [ecx + 0x34]
test al, al
jne 0x668fad
push edi
call fcn.00621500
add esp, 4
call fcn.00667dd0
mov ecx, dword [0x91cfa4]
mov edx, dword [ecx + 0x58c]
mov esi, 0x7fff
cmp edx, esi
jne 0x669aaf
mov edx, dword [0x91d320]
cmp byte [edx + 5], 1
mov ebx, 4
je 0x66939b
test al, al
mov edx, dword [0x91d3f0]
je 0x668ff3
cmp byte [edx + 0x6b], bl
jne 0x66939b
cmp dword [ecx + 0x654], esi
jne 0x669aaf
fld dword [esp + 0xc]
fcomp dword [0x8d3720]
fnstsw ax
test ah, 0x41
jne 0x669aaf
cmp word [edx + 0x8c], 6
je 0x669aaf
mov eax, dword [0xeebb14]
movzx eax, byte [eax + 0x87158c]
lea eax, [eax + eax*2]
cdq
sub eax, edx
sar eax, 1
mov word [ecx + 0x646], ax
mov eax, dword [0x91cfa4]
mov cl, byte [eax + 0x42c]
test cl, cl
je 0x6690b7
mov cl, byte [eax + 0xf]
cmp cl, byte [eax + 0x42d]
jne 0x6690b7
mov byte [eax + 0x42c], 0
mov ecx, dword [0x91cfa4]
mov al, byte [ecx + 0x42d]
cmp al, 0xff
je 0x66907b
movzx eax, al
cdq
mov esi, 0x17
idiv esi
jmp 0x669080
mov edx, 1
imul edx, edx, 0x4c0
add edx, 0xd92230
mov al, byte [edx]
mov byte [ecx + 0x10], al
movzx ecx, byte [edx + 0xd9]
mov eax, dword [0x91cfa4]
xor ecx, 1
mov dl, byte [eax + ecx*2 + 0x1c]
mov byte [eax + 0xf], dl
mov eax, dword [0x91cfa4]
mov cl, byte [eax + 0xf]
mov byte [eax + 0x24], cl
mov eax, dword [0x91cfa4]
fld dword [esp + 0x10]
mov dl, byte [eax + 0x24]
fcomp dword [0x8d371c]
mov byte [eax + 0x25], dl
fnstsw ax
test ah, 1
jne 0x6690d9
pop esi
pop ebx
pop edi
add esp, 8
jmp 0x6672a0
push 0x37
call fcn.00657090
mov eax, dword [0x91cfa4]
mov al, byte [eax + 0x24]
add esp, 4
cmp al, 0xff
je 0x6690fc
movzx eax, al
cdq
mov ecx, 0x17
idiv ecx
jmp 0x669101
mov edx, 1
imul edx, edx, 0x4c0
add edx, 0xd92230
mov esi, edx
call fcn.00566fd0
mov edx, dword [0x91cfa8]
cmp byte [edx + 0x64], 5
jne 0x66928b
mov eax, dword [0xeebb14]
movzx ecx, byte [eax + 0x87158c]
mov edx, dword [0x91cfa4]
shl ecx, 1
mov dword [edx + 8], ecx
call fcn.0052efb0
test eax, eax
je 0x669185
call fcn.00865020
test eax, eax
jne 0x669185
push ebx
push 2
call fcn.0042a8c0
call fcn.00635a70
push 0xd926f0
call fcn.00770b70
mov ecx, dword [0x91cfa4]
add esp, 0xc
mov byte [ecx + 0x1a], al
mov edx, dword [0x91cfa4]
mov al, byte [edx + 0x45]
pop esi
pop ebx
mov byte [0xeb2c2c], al
pop edi
add esp, 8
ret
call fcn.00865520
test eax, eax
je 0x66927b
mov al, byte [esi + 0xd9]
mov ebx, dword [0x91cfa4]
movzx edi, al
xor edi, 1
mov cl, byte [ebx + edi*2 + 0x1c]
cmp cl, 0xff
je 0x6691bb
test cl, cl
je 0x6691bb
movzx ecx, cl
mov esi, 1
jmp 0x66922d
xor al, 1
neg al
sbb eax, eax
and eax, 0xb
inc eax
lea ecx, [eax + 1]
add eax, 0xb
cmp ecx, eax
mov dword [esp + 0x10], eax
jge 0x669227
lea esi, [edi + edi*4]
shl esi, 3
lea esp, [esp]
cmp ecx, 0xff
je 0x6691fe
mov eax, ecx
cdq
mov ebx, 0x17
idiv ebx
mov eax, dword [esp + 0x10]
mov ebx, dword [0x91cfa4]
jmp 0x669203
mov edx, 1
imul edx, edx, 0x4c0
movzx edx, byte [edx + 0xd92307]
add edx, esi
imul edx, edx, 0x110
cmp word [edx + 0xeb6580], 0
jne 0x66922b
inc ecx
cmp ecx, eax
jl 0x6691e0
mov ecx, dword [esp + 0x10]
xor esi, esi
cmp ecx, 0xff
je 0x669247
mov eax, ecx
cdq
mov ebx, 0x17
idiv ebx
mov ebx, dword [0x91cfa4]
jmp 0x66924c
mov edx, 1
imul edx, edx, 0x4c0
cmp byte [edx + 0xd92306], 0x1b
jb 0x669273
test esi, esi
je 0x669273
mov al, byte [ebx + edi*2 + 0x1d]
cmp al, 0xff
je 0x66926b
test al, al
jne 0x669273
mov byte [ebx + 0x1a], al
jmp 0x669351
mov byte [ebx + 0x1a], cl
jmp 0x669351
mov eax, dword [0x91cfa4]
mov cl, byte [eax + 0x1c]
mov byte [eax + 0x1a], cl
jmp 0x669351
push edi
call fcn.006a78a0
mov edx, dword [0xeebb14]
movzx eax, byte [edx + 0x87158c]
mov ecx, dword [0x91cfa4]
shr eax, 1
mov dword [ecx + 8], eax
movzx edx, byte [esi + 0xd9]
mov ecx, dword [0x91cfa4]
xor edx, 1
mov al, byte [ecx + edx*2 + 0x1c]
add esp, 4
cmp al, 0xff
je 0x6692d1
movzx eax, al
cdq
mov edi, 0x17
idiv edi
jmp 0x6692d6
mov edx, 1
imul edx, edx, 0x4c0
add edx, 0xd92230
mov edi, edx
cmp byte [edi + 0xd6], 7
ja 0x669318
push edi
call fcn.006acc80
add esp, 4
test al, al
je 0x669312
movzx ecx, byte [esi + 0xd9]
mov eax, dword [0x91cfa4]
xor ecx, 1
mov dl, byte [eax + ecx*2 + 0x1d]
mov byte [eax + 0x1a], dl
jmp 0x669347
mov ecx, dword [0x91cfa4]
mov al, byte [edi + 0xd6]
cmp al, 0x1b
jae 0x669336
test al, al
je 0x669336
movzx eax, byte [esi + 0xd9]
xor eax, 1
mov dl, byte [ecx + eax*2 + 0x1c]
jmp 0x669344
movzx eax, byte [esi + 0xd9]
xor eax, 1
mov dl, byte [ecx + eax*2 + 0x1d]
mov byte [ecx + 0x1a], dl
push 6
call fcn.0061d490
add esp, 4
mov eax, dword [0x91d3f0]
mov ecx, dword [eax + 0x10]
mov edx, dword [0x91cfa4]
mov dword [edx + 0x28], ecx
mov eax, dword [0x91d3f0]
mov ecx, dword [eax + 0x14]
mov edx, dword [0x91cfa4]
mov dword [edx + 0x2c], ecx
mov eax, dword [0x91d3f0]
mov ecx, dword [eax + 0x18]
mov edx, dword [0x91cfa4]
push 3
push 2
mov dword [edx + 0x30], ecx
call fcn.0042a8c0
add esp, 8
pop esi
pop ebx
pop edi
add esp, 8
jmp fcn.00635a70
mov al, byte [ecx + 0x24]
mov byte [ecx + 0x25], al
mov ecx, dword [0xeebb14]
movzx eax, byte [ecx + 0x87158c]
lea eax, [eax + eax*2]
cdq
sub eax, edx
mov edx, dword [0x91cfa4]
sar eax, 1
mov word [edx + 0x646], ax
call fcn.00667210
test al, al
je 0x669a23
push 0x37
call fcn.00657090
mov eax, dword [0x91cfa8]
mov cl, byte [eax + 0x64]
add esp, 4
cmp cl, 5
jne 0x669704
call fcn.0052ef80
sub eax, edi
je 0x66941c
dec eax
je 0x66940b
dec eax
jne 0x669421
call fcn.00532530
mov dword [eax + 0x158], 1
jmp 0x669421
call fcn.00532580
mov dword [eax + 0x1c8], 1
jmp 0x669421
call fcn.00566f60
mov esi, dword [0x91cfa4]
mov al, byte [esi + 0x24]
cmp al, 0xff
je 0x66943b
movzx eax, al
cdq
mov ecx, 0x17
idiv ecx
jmp 0x669440
mov edx, 1
imul edx, edx, 0x4c0
mov ecx, dword [0x91d3f0]
add edx, 0xd92230
mov bl, byte [edx + 0xd9]
xor eax, eax
test bl, bl
sete al
lea eax, [eax + eax - 1]
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
fmul dword [ecx + 0x10]
fcomp dword [0x879dc4]
fnstsw ax
test ah, 0x41
je 0x66950c
mov dl, byte [edx]
xor bl, bl
cmp dl, 1
mov edi, 1
je 0x669492
cmp dl, 0xc
jne 0x669494
mov bl, 1
movzx eax, word [ecx + 0x8c]
sub eax, 0xb
je 0x6694bb
sub eax, 2
je 0x6694a8
dec eax
jmp 0x6694c3
movzx eax, word [ecx + 0x90]
cmp eax, 4
je 0x6694c9
cmp eax, 0xb
jne 0x6694c5
jmp 0x6694c9
cmp word [ecx + 0x90], 4
je 0x6694c9
test bl, bl
je 0x669522
mov al, byte [esi + 0x10]
cmp al, 0xff
je 0x669522
movzx eax, al
cdq
mov esi, 0x17
idiv esi
xor eax, eax
imul edx, edx, 0x4c0
mov bl, byte [edx + 0xd92309]
test bl, bl
sete al
lea eax, [eax + eax - 1]
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
fmul dword [ecx + 0x10]
fcomp dword [0x879dc4]
fnstsw ax
test ah, 0x41
jne 0x669522
xor edi, edi
call fcn.0052efb0
test eax, eax
je 0x669522
push 0x6c04053f
call fcn.005617c0
add esp, 4
mov ecx, dword [0x91cfa4]
mov al, byte [ecx + 0x24]
cmp al, 0xff
je 0x66953c
movzx eax, al
cdq
mov ecx, 0x17
idiv ecx
jmp 0x669541
mov edx, 1
imul edx, edx, 0x4c0
add edx, 0xd92230
mov esi, edx
call fcn.0052efb0
test eax, eax
je 0x669561
call fcn.00865020
test eax, eax
je 0x6695a4
call fcn.00865520
test eax, eax
je 0x66960f
test edi, edi
mov al, byte [esi + 0xd9]
jne 0x6695f1
xor edx, edx
test al, al
mov eax, dword [0x91d3f0]
sete dl
lea edx, [edx + edx - 1]
mov dword [esp + 0x10], edx
fild dword [esp + 0x10]
fmul dword [eax + 0x10]
fcomp dword [0x879dc4]
fnstsw ax
test ah, 0x41
je 0x669624
mov edx, dword [0x91cfa4]
mov dword [edx + 0x28], 0x46520000
mov eax, dword [0x91d3f0]
mov ecx, dword [eax + 0x14]
mov edx, dword [0x91cfa4]
mov dword [edx + 0x2c], ecx
mov eax, dword [0x91d3f0]
mov ecx, dword [eax + 0x18]
mov edx, dword [0x91cfa4]
mov dword [edx + 0x30], ecx
mov eax, dword [0xeebb14]
movzx ecx, byte [eax + 0x87158c]
mov edx, dword [0x91cfa4]
shl ecx, 1
mov dword [edx + 8], ecx
push 4
jmp 0x66914e
mov edx, dword [0x91d3f0]
xor ecx, ecx
test al, al
sete cl
lea ecx, [ecx + ecx - 1]
mov dword [esp + 0x10], ecx
fild dword [esp + 0x10]
fmul dword [edx + 0x10]
jmp 0x669617
mov eax, dword [0x91d3f0]
fld dword [eax + 0x10]
fcomp dword [0x879dc4]
fnstsw ax
test ah, 5
jp 0x6695a4
call fcn.00566fd0
mov ecx, dword [0xeebb14]
movzx edx, byte [ecx + 0x87158c]
mov eax, dword [0x91cfa4]
shl edx, 1
mov dword [eax + 8], edx
mov ecx, dword [0x91cfa4]
mov word [ecx + 0xc], 0
mov ecx, dword [0x91d3f0]
fld dword [ecx + 0x10]
fcomp dword [0x879dc4]
fnstsw ax
test ah, 5
jp 0x669676
mov edx, dword [0x91cfa4]
mov esi, 0xd926f0
mov dword [edx + 0x28], 0xc6520000
jmp 0x669697
fld dword [ecx + 0x10]
fcomp dword [0x879dc4]
fnstsw ax
test ah, 1
jne 0x669697
mov eax, dword [0x91cfa4]
mov esi, 0xd95b30
mov dword [eax + 0x28], 0x46520000
mov ecx, dword [0x91d3f0]
mov edx, dword [ecx + 0x14]
mov eax, dword [0x91cfa4]
mov dword [eax + 0x2c], edx
mov ecx, dword [0x91d3f0]
mov eax, dword [0x91cfa4]
mov edx, dword [ecx + 0x18]
mov dword [eax + 0x30], edx
xor al, al
jmp 0x6696c0
mov cl, byte [esi + 1]
test cl, cl
jne 0x6696d3
inc al
add esi, 0x4c0
cmp al, 0xb
jb 0x6696c0
mov cl, byte [esi]
mov edx, dword [0x91cfa4]
push 9
push 2
mov byte [edx + 0x1a], cl
call fcn.0042a8c0
add esp, 8
call fcn.00635a70
mov eax, dword [0x91cfa4]
mov cl, byte [eax + 0x45]
pop esi
pop ebx
mov byte [0xeb2c2c], cl
pop edi
add esp, 8
ret
mov edi, dword [0x91cfa4]
mov byte [0xe7d260], 0xff
mov al, byte [edi + 0x24]
cmp al, 0xff
je 0x669725
movzx eax, al
cdq
mov ecx, 0x17
idiv ecx
jmp 0x66972a
mov edx, 1
imul edx, edx, 0x4c0
mov ecx, dword [0x91d3f0]
add edx, 0xd92230
mov esi, edx
mov al, byte [esi + 0xd9]
xor edx, edx
test al, al
sete dl
lea edx, [edx + edx - 1]
mov dword [esp + 0x10], edx
fild dword [esp + 0x10]
fmul dword [ecx + 0x10]
fcomp dword [0x879dc4]
fnstsw ax
test ah, 0x41
jne 0x6697fd
mov byte [edi + 0xa0], 0
call fcn.00617c50
cmp eax, 0x10
jge 0x66982a
mov edi, dword [0x91cfa4]
mov al, byte [edi + 0x10]
cmp al, 0xff
je 0x66982a
movzx eax, al
cdq
mov ecx, 0x17
idiv ecx
mov cl, byte [esi + 0xd9]
imul edx, edx, 0x4c0
add edx, 0xd92230
cmp cl, byte [edx + 0xd9]
jne 0x6697c4
mov dl, byte [edx]
cmp byte [esi], dl
je 0x6697c4
mov byte [0xe7d260], dl
jmp 0x66982a
mov edx, dword [0x91d3f0]
cmp word [edx + 0x8c], 0xb
jne 0x66982a
mov al, byte [edi + 0x11]
cmp al, 0xff
je 0x66982a
movzx eax, al
cdq
mov edi, 0x17
idiv edi
imul edx, edx, 0x4c0
add edx, 0xd92230
cmp cl, byte [edx + 0xd9]
jmp 0x66993d
mov al, byte [esi]
cmp al, 1
je 0x66989f
cmp al, 0xc
je 0x66989f
movzx eax, word [ecx + 0x8c]
sub eax, 0xb
je 0x669894
sub eax, 2
je 0x669865
dec eax
je case.0x6698b2.4
mov byte [edi + 0xa0], 1
mov edi, dword [0x91cfa4]
mov al, byte [edi + 0xa0]
test al, al
jne 0x669a06
mov edx, dword [0x91d3f0]
movzx ecx, word [edx + 0x8c]
xor al, al
dec ecx
cmp ecx, 0xe
ja case.0x66985e.4
movzx ecx, byte [ecx + 0x669ac8]
jmp dword [ecx*4 + 0x669ab8]
cmp word [ecx + 0x90], 0xb
jne 0x669878
cmp word [ecx + 0x92], bx
je case.0x6698b2.4
cmp dword [edi + 0x578], ebx
jne case.0x6698b2.0
mov al, byte [edi + 0x10]
cmp al, 0xff
je 0x6698b9
movzx eax, al
cdq
mov esi, 0x17
idiv esi
jmp 0x6698be
cmp word [ecx + 0x90], bx
jne case.0x6698b2.0
jmp case.0x6698b2.4
movzx eax, word [ecx + 0x8c]
cmp eax, 8
ja case.0x6698b2.4
movzx eax, byte [eax + 0x669ae0]
jmp dword [eax*4 + 0x669ad8]
mov edx, 1
imul edx, edx, 0x4c0
add edx, 0xd92230
mov esi, edx
mov al, byte [esi + 0xd9]
xor edx, edx
test al, al
sete dl
lea edx, [edx + edx - 1]
mov dword [esp + 0x10], edx
fild dword [esp + 0x10]
fmul dword [ecx + 0x10]
fcomp dword [0x879dc4]
fnstsw ax
test ah, 0x41
jne 0x669958
mov byte [edi + 0xa0], 0
call fcn.00617c50
cmp eax, 0x10
jge 0x66982a
mov eax, dword [0x91cfa4]
mov al, byte [eax + 0x11]
cmp al, 0xff
je 0x66982a
movzx eax, al
cdq
mov ecx, 0x17
idiv ecx
mov al, byte [esi + 0xd9]
imul edx, edx, 0x4c0
add edx, 0xd92230
cmp al, byte [edx + 0xd9]
jne 0x66982a
mov dl, byte [edx]
cmp byte [esi], dl
je 0x66982a
mov byte [0xe7d260], dl
jmp 0x66982a
mov byte [edi + 0xa0], 1
mov ecx, dword [0x91cfa4]
mov al, byte [ecx + 0x24]
cmp al, 0xff
je 0x66998a
movzx eax, al
cdq
mov ecx, 0x17
idiv ecx
imul edx, edx, 0x4c0
add edx, 0xd92230
mov esi, edx
jmp 0x66982a
mov edx, 1
imul edx, edx, 0x4c0
add edx, 0xd92230
mov esi, edx
jmp 0x66982a
cmp word [edx + 0x90], 0xb
jne case.0x66985e.4
jmp case.0x66985e.1
movzx ecx, word [edx + 0x90]
dec ecx
cmp ecx, 7
ja case.0x66985e.4
movzx ecx, byte [ecx + 0x669af8]
jmp dword [ecx*4 + 0x669aec]
cmp word [edx + 0x92], 3
mov al, 2
je case.0x66985e.4
mov al, 1
mov cl, byte [edi + 0x19]
test cl, cl
je 0x6699eb
mov byte [0xe7d260], 0xff
mov byte [edi + 0x45], 0x11
mov al, 2
movzx eax, al
dec eax
je 0x6699f6
dec eax
je 0x6699fd
jmp 0x669a06
mov byte [0xe7d260], 0xff
push esi
call fcn.00618530
add esp, 4
mov dl, byte [esi]
mov eax, dword [0x91cfa4]
push 7
push 2
mov byte [eax + 0x1a], dl
call fcn.0042a8c0
add esp, 8
pop esi
pop ebx
pop edi
add esp, 8
ret
mov eax, dword [0x91cfa4]
mov cl, byte [eax + 0x42c]
test cl, cl
je 0x669a9d
mov cl, byte [eax + 0xf]
cmp cl, byte [eax + 0x42d]
jne 0x669a9d
mov byte [eax + 0x42c], 0
mov ecx, dword [0x91cfa4]
mov al, byte [ecx + 0x42d]
cmp al, 0xff
je 0x669a61
movzx eax, al
cdq
mov ebx, 0x17
idiv ebx
jmp 0x669a66
mov edx, 1
imul edx, edx, 0x4c0
add edx, 0xd92230
mov al, byte [edx]
mov byte [ecx + 0x10], al
movzx ecx, byte [edx + 0xd9]
mov eax, dword [0x91cfa4]
xor ecx, 1
mov dl, byte [eax + ecx*2 + 0x1c]
mov byte [eax + 0xf], dl
mov eax, dword [0x91cfa4]
mov cl, byte [eax + 0xf]
mov byte [eax + 0x24], cl
mov eax, dword [0x91cfa4]
cmp dword [eax + 0x654], esi
je 0x6690ce
mov dword [eax + 0x654], edi
pop esi
pop ebx
pop edi
add esp, 8
ret