Function at 0x4954a0
Capabilities:
Encrypt data using speck

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1fc
mov eax, dword [0x59e080]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
mov dword [ebp - 0x1c4], ecx
mov dword [ebp - 8], 0
mov dword [ebp - 0xc], 0
xorps xmm0, xmm0
movsd qword [ebp - 0x80], xmm0
xorps xmm0, xmm0
movsd qword [ebp - 0x78], xmm0
xorps xmm0, xmm0
movsd qword [ebp - 0x78], xmm0
jmp 0x4954f6
movsd xmm0, qword [ebp - 0x78]
addsd xmm0, qword [0x5806f8]
movsd qword [ebp - 0x78], xmm0
movsd xmm0, qword [0x5821c0]
comisd xmm0, xmmword [ebp - 0x78]
jbe 0x49557c
movsd xmm0, qword [0x582028]
mulsd xmm0, qword [ebp - 0x78]
mulsd xmm0, qword [ebp - 0x78]
movsd xmm1, qword [ebp - 0x78]
mulsd xmm1, qword [ebp - 0x78]
subsd xmm0, xmm1
movsd xmm1, qword [0x581e70]
mulsd xmm1, qword [ebp - 0x78]
mulsd xmm1, qword [ebp - 0x78]
addsd xmm1, qword [0x581ee0]
divsd xmm0, xmm1
addsd xmm0, qword [ebp - 0x80]
movsd qword [ebp - 0x80], xmm0
movsd xmm0, qword [ebp - 0x80]
comisd xmm0, xmmword [0x581ff0]
jbe 0x495577
movsd xmm0, qword [0x581dc0]
mulsd xmm0, qword [ebp - 0x78]
movsd xmm1, qword [ebp - 0x80]
subsd xmm1, xmm0
movsd qword [ebp - 0x80], xmm1
jmp 0x4954e4
xorps xmm0, xmm0
comisd xmm0, xmmword [ebp - 0x80]
jbe 0x4955d6
dec esi
and esi, dword es:[eax + 0x49]
push eax
and dword [edx], ebp
cmp al, 0x45
imul ecx, dword [ebx + 0x44], 0x783e3849
inc edi
push eax
inc esi
pushal
mov al, 7
mov ch, 0xd
mov dh, 0x13
mov eax, 0xaf0ebb11
push es
mov bh, 0x11
mov dl, 0x15
mov al, 0xf
mov eax, 0xae0ab30a
push cs
mov cl, 0xa
lodsd eax, dword [esi]
adc al, 0xba
adc dword [edi - 0x52f64eef], esi
adc bh, byte [ecx - 0x4bf14bf0]
or al, 0xb9
adc al, 0xba
or al, 0xb4
push es
mov dh, 6
mov ch, 0xf
mov al, 0xb
jmp 0x4965ab
mov dword [ebp - 8], 0x49559b
mov dword [ebp - 0xc], 0x495586
mov eax, dword [ebp - 8]
mov dword [ebp - 0x50], eax
mov ecx, dword [ebp - 0xc]
mov dword [ebp - 0xa8], ecx
mov byte [ebp - 0x65], 0x19
mov dword [ebp - 0x28], 0
jmp 0x495609
mov edx, dword [ebp - 0x28]
add edx, 1
mov dword [ebp - 0x28], edx
cmp dword [ebp - 0x28], 0x100
jae 0x495621
mov eax, dword [ebp - 0x28]
mov cl, byte [ebp - 0x28]
mov byte [ebp + eax - 0x1c0], cl
jmp 0x495600
mov dword [ebp - 0x70], 0
mov byte [ebp - 0x14], 0
mov dword [ebp - 0x28], 0xff
jmp 0x49563e
mov edx, dword [ebp - 0x28]
sub edx, 1
mov dword [ebp - 0x28], edx
cmp dword [ebp - 0x28], 0
jbe 0x495823
mov dword [ebp - 0x8c], 0
mov dword [ebp - 0x84], 1
mov eax, dword [ebp - 0x84]
cmp eax, dword [ebp - 0x28]
jae 0x495679
mov ecx, dword [ebp - 0x84]
lea edx, [ecx + ecx + 1]
mov dword [ebp - 0x84], edx
jmp 0x49565c
mov eax, dword [ebp - 0x70]
mov dword [ebp - 0x98], eax
cmp dword [ebp - 0x98], 3
ja case.default.0x495695
mov ecx, dword [ebp - 0x98]
jmp dword [ecx*4 + 0x4965d4]
movzx edx, byte [ebp - 0x14]
movzx ebx, byte [ebp + edx - 0x1c0]
movsd xmm0, qword [ebp - 0x80]
call fcn.0051c6e0
and eax, 0xff
add ebx, eax
mov byte [ebp - 0x14], bl
jmp 0x49574e
movzx eax, byte [ebp - 0x14]
movzx ebx, byte [ebp + eax - 0x1c0]
movsd xmm0, qword [ebp - 0x80]
call fcn.0051c6e0
shr eax, 8
and eax, 0xff
add ebx, eax
mov byte [ebp - 0x14], bl
jmp 0x49574e
movzx ecx, byte [ebp - 0x14]
movzx ebx, byte [ebp + ecx - 0x1c0]
movsd xmm0, qword [ebp - 0x80]
call fcn.0051c6e0
shr eax, 0x10
and eax, 0xff
add ebx, eax
mov byte [ebp - 0x14], bl
jmp 0x49574e
movzx edx, byte [ebp - 0x14]
movzx ebx, byte [ebp + edx - 0x1c0]
movsd xmm0, qword [ebp - 0x80]
call fcn.0051c6e0
shr eax, 0x18
and eax, 0xff
add ebx, eax
mov byte [ebp - 0x14], bl
jmp 0x49574e
movzx eax, byte [ebp - 0x14]
movzx ecx, byte [ebp + eax - 0x1c0]
mov edx, dword [ebp - 0xa8]
add edx, dword [ebp - 0x70]
movzx eax, byte [edx - 4]
add ecx, eax
mov byte [ebp - 0x14], cl
mov ecx, dword [ebp - 0x70]
add ecx, 1
mov dword [ebp - 0x70], ecx
movzx edx, byte [ebp - 0x65]
cmp dword [ebp - 0x70], edx
jb 0x495774
mov dword [ebp - 0x70], 0
movzx eax, byte [ebp - 0x65]
movzx ecx, byte [ebp - 0x14]
add ecx, eax
mov byte [ebp - 0x14], cl
movzx edx, byte [ebp - 0x14]
and edx, dword [ebp - 0x84]
mov dword [ebp - 0x6c], edx
mov eax, dword [ebp - 0x8c]
add eax, 1
mov dword [ebp - 0x8c], eax
cmp dword [ebp - 0x8c], 0xb
jbe 0x4957a4
mov eax, dword [ebp - 0x6c]
xor edx, edx
div dword [ebp - 0x28]
mov dword [ebp - 0x6c], edx
mov ecx, dword [ebp - 0x6c]
cmp ecx, dword [ebp - 0x28]
ja 0x495679
mov edx, dword [ebp - 0x28]
cmp edx, dword [ebp - 0x6c]
je 0x49581e
mov eax, dword [ebp - 0x6c]
movzx ecx, byte [ebp + eax - 0x1c0]
mov edx, dword [ebp - 0x28]
movzx eax, byte [ebp + edx - 0x1c0]
xor eax, ecx
mov ecx, dword [ebp - 0x28]
mov byte [ebp + ecx - 0x1c0], al
mov edx, dword [ebp - 0x28]
movzx eax, byte [ebp + edx - 0x1c0]
mov ecx, dword [ebp - 0x6c]
movzx edx, byte [ebp + ecx - 0x1c0]
xor edx, eax
mov eax, dword [ebp - 0x6c]
mov byte [ebp + eax - 0x1c0], dl
mov ecx, dword [ebp - 0x6c]
movzx edx, byte [ebp + ecx - 0x1c0]
mov eax, dword [ebp - 0x28]
movzx ecx, byte [ebp + eax - 0x1c0]
xor ecx, edx
mov edx, dword [ebp - 0x28]
mov byte [ebp + edx - 0x1c0], cl
jmp 0x495635
mov eax, 1
shl eax, 0
mov cl, byte [ebp + eax - 0x1c0]
mov byte [ebp - 0xd], cl
mov edx, 1
imul eax, edx, 3
mov cl, byte [ebp + eax - 0x1c0]
mov byte [ebp - 0xe], cl
mov edx, 1
imul eax, edx, 5
mov cl, byte [ebp + eax - 0x1c0]
mov byte [ebp - 0x12], cl
mov edx, 1
imul eax, edx, 7
mov cl, byte [ebp + eax - 0x1c0]
mov byte [ebp - 0xf], cl
movzx edx, byte [ebp - 0x14]
mov al, byte [ebp + edx - 0x1c0]
mov byte [ebp - 0x10], al
mov dword [ebp - 0x9c], 0x36
cmp dword [ebp - 0x9c], 2
jle 0x496556
mov ecx, dword [ebp - 0x9c]
and ecx, 1
jne 0x496556
mov dword [ebp - 0x1c], 0
mov dword [ebp - 0x2c], 0
mov edx, dword [ebp - 0x2c]
add edx, 1
mov dword [ebp - 0x2c], edx
mov dword [ebp - 0x64], 0
mov eax, dword [ebp - 0x1c]
shl eax, 1
mov dword [ebp - 0x64], eax
mov dword [ebp - 0x38], 0
mov ecx, dword [ebp - 0x50]
add ecx, dword [ebp - 0x64]
movzx edx, byte [ecx]
add edx, dword [ebp - 0x38]
mov dword [ebp - 0x38], edx
mov dword [ebp - 0x3c], 0
mov eax, dword [ebp - 0x3c]
add eax, 0xad
mov dword [ebp - 0x3c], eax
mov dword [ebp - 0x54], 0
mov ecx, dword [ebp - 0x1c]
lea edx, [ecx + ecx + 1]
mov dword [ebp - 0x54], edx
mov dword [ebp - 0x40], 0
mov eax, dword [ebp - 0x50]
add eax, dword [ebp - 0x54]
movzx ecx, byte [eax]
add ecx, dword [ebp - 0x40]
mov dword [ebp - 0x40], ecx
mov dword [ebp - 0x44], 0
mov edx, dword [ebp - 0x44]
add edx, 6
mov dword [ebp - 0x44], edx
mov dword [ebp - 0x48], 0
mov eax, dword [ebp - 0x38]
sub eax, dword [ebp - 0x3c]
add eax, dword [ebp - 0x48]
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x4c], 0
mov ecx, dword [ebp - 0x40]
sub ecx, dword [ebp - 0x44]
add ecx, dword [ebp - 0x4c]
mov dword [ebp - 0x4c], ecx
mov dword [ebp - 0x58], 0
movss xmm0, dword [0x5829e4]
movss dword [ebp - 0x34], xmm0
movss xmm0, dword [0x582998]
movss dword [ebp - 0x30], xmm0
movss xmm0, dword [0x5828e8]
movss dword [ebp - 0x20], xmm0
movss xmm0, dword [0x582828]
movss dword [ebp - 0x24], xmm0
movss xmm0, dword [ebp - 0x20]
mulss xmm0, dword [ebp - 0x24]
movss dword [ebp - 0x20], xmm0
movss xmm0, dword [ebp - 0x20]
subss xmm0, dword [ebp - 0x24]
movss dword [ebp - 0x20], xmm0
movss xmm0, dword [ebp - 0x20]
mulss xmm0, dword [ebp - 0x24]
movss dword [ebp - 0x20], xmm0
movss xmm0, dword [ebp - 0x20]
addss xmm0, dword [ebp - 0x24]
movss dword [ebp - 0x20], xmm0
movss xmm0, dword [ebp - 0x20]
comiss xmm0, dword [ebp - 0x24]
jbe 0x495a16
movss xmm0, dword [ebp - 0x24]
addss xmm0, dword [ebp - 0x30]
movss dword [ebp - 0x24], xmm0
movss xmm0, dword [ebp - 0x20]
subss xmm0, dword [ebp - 0x34]
movss dword [ebp - 0x20], xmm0
movss xmm0, dword [ebp - 0x34]
mulss xmm0, dword [ebp - 0x20]
movss dword [ebp - 0x34], xmm0
movss xmm0, dword [ebp - 0x34]
addss xmm0, dword [ebp - 0x20]
movss dword [ebp - 0x34], xmm0
mov edx, dword [ebp - 0x48]
shl edx, 4
mov dword [ebp - 0x58], edx
jmp 0x495b13
movss xmm0, dword [ebp - 0x34]
addss xmm0, dword [ebp - 0x20]
movss dword [ebp - 0x34], xmm0
movss xmm0, dword [ebp - 0x30]
mulss xmm0, dword [ebp - 0x24]
movss dword [ebp - 0x30], xmm0
movss xmm0, dword [ebp - 0x30]
addss xmm0, dword [ebp - 0x24]
movss dword [ebp - 0x30], xmm0
movss xmm0, dword [ebp - 0x30]
subss xmm0, dword [ebp - 0x24]
movss dword [ebp - 0x30], xmm0
movss xmm0, dword [ebp - 0x30]
subss xmm0, dword [ebp - 0x24]
movss dword [ebp - 0x30], xmm0
movss xmm0, dword [ebp - 0x34]
mulss xmm0, dword [ebp - 0x20]
movss dword [ebp - 0x34], xmm0
movss xmm0, dword [ebp - 0x24]
divss xmm0, dword [ebp - 0x30]
movss dword [ebp - 0x24], xmm0
movss xmm0, dword [ebp - 0x24]
subss xmm0, dword [ebp - 0x30]
movss dword [ebp - 0x24], xmm0
movss xmm0, dword [ebp - 0x24]
comiss xmm0, dword [ebp - 0x30]
jbe 0x495ad7
movss xmm0, dword [ebp - 0x30]
subss xmm0, dword [ebp - 0x24]
movss dword [ebp - 0x30], xmm0
movss xmm0, dword [ebp - 0x34]
mulss xmm0, dword [ebp - 0x20]
movss dword [ebp - 0x34], xmm0
movss xmm0, dword [ebp - 0x24]
subss xmm0, dword [ebp - 0x30]
movss dword [ebp - 0x24], xmm0
movss xmm0, dword [ebp - 0x20]
subss xmm0, dword [ebp - 0x34]
movss dword [ebp - 0x20], xmm0
jmp 0x495b13
movss xmm0, dword [ebp - 0x20]
mulss xmm0, dword [ebp - 0x34]
movss dword [ebp - 0x20], xmm0
movss xmm0, dword [ebp - 0x20]
divss xmm0, dword [ebp - 0x34]
movss dword [ebp - 0x20], xmm0
movss xmm0, dword [ebp - 0x30]
divss xmm0, dword [ebp - 0x24]
movss dword [ebp - 0x30], xmm0
movss xmm0, dword [ebp - 0x20]
divss xmm0, dword [ebp - 0x34]
movss dword [ebp - 0x20], xmm0
mov dword [ebp - 0x5c], 0
mov eax, dword [ebp - 0x4c]
mov dword [ebp - 0x5c], eax
mov dword [ebp - 0x60], 0
mov ecx, dword [ebp - 0x58]
or ecx, dword [ebp - 0x5c]
mov dword [ebp - 0x60], ecx
mov byte [ebp - 0x13], 0
mov dl, byte [ebp - 0x60]
mov byte [ebp - 0x13], dl
mov byte [ebp - 0x11], 0
movzx eax, byte [ebp - 0x10]
mov cl, byte [ebp + eax - 0x1c0]
mov byte [ebp - 0x11], cl
movzx edx, byte [ebp - 0xd]
movzx eax, byte [ebp + edx - 0x1c0]
mov dword [ebp - 0xac], eax
mov cl, byte [ebp - 0xd]
add cl, 1
mov byte [ebp - 0xd], cl
movzx edx, byte [ebp - 0xe]
add edx, dword [ebp - 0xac]
mov byte [ebp - 0xe], dl
movzx eax, byte [ebp - 0xe]
movzx ecx, byte [ebp - 0x10]
mov dl, byte [ebp + eax - 0x1c0]
mov byte [ebp + ecx - 0x1c0], dl
movzx eax, byte [ebp - 0xf]
movzx ecx, byte [ebp - 0xe]
mov dl, byte [ebp + eax - 0x1c0]
mov byte [ebp + ecx - 0x1c0], dl
movzx eax, byte [ebp - 0xd]
movzx ecx, byte [ebp - 0xf]
mov dl, byte [ebp + eax - 0x1c0]
mov byte [ebp + ecx - 0x1c0], dl
movzx eax, byte [ebp - 0xd]
mov cl, byte [ebp - 0x11]
mov byte [ebp + eax - 0x1c0], cl
movzx edx, byte [ebp - 0x11]
movzx eax, byte [ebp + edx - 0x1c0]
movzx ecx, byte [ebp - 0x12]
add ecx, eax
mov byte [ebp - 0x12], cl
movzx edx, byte [ebp - 0x13]
movzx eax, byte [ebp - 0xe]
movzx ecx, byte [ebp + eax - 0x1c0]
movzx eax, byte [ebp - 0xd]
movzx eax, byte [ebp + eax - 0x1c0]
add ecx, eax
and ecx, 0xff
movzx ecx, byte [ebp + ecx - 0x1c0]
xor edx, ecx
movzx eax, byte [ebp - 0xf]
movzx ecx, byte [ebp + eax - 0x1c0]
movzx eax, byte [ebp - 0x10]
movzx eax, byte [ebp + eax - 0x1c0]
add ecx, eax
movzx eax, byte [ebp - 0x12]
movzx eax, byte [ebp + eax - 0x1c0]
add ecx, eax
and ecx, 0xff
movzx ecx, byte [ebp + ecx - 0x1c0]
movzx eax, byte [ebp + ecx - 0x1c0]
xor edx, eax
mov byte [ebp - 0xf], dl
mov cl, byte [ebp - 0x13]
mov byte [ebp - 0x10], cl
mov dl, byte [ebp - 0xf]
mov byte [ebp - 0x15], dl
cmp dword [ebp - 0x1c], 0
jle 0x495c6c
movsx ax, byte [ebp - 0x15]
mov ecx, dword [ebp - 0x1c]
mov word [ebp + ecx*2 - 0x1fe], ax
mov edx, dword [ebp - 0x1c]
add edx, 1
mov dword [ebp - 0x1c], edx
mov eax, dword [ebp - 0x2c]
add eax, 1
mov dword [ebp - 0x2c], eax
mov ecx, dword [ebp - 0x1c]
shl ecx, 1
mov dword [ebp - 0x64], ecx
mov edx, dword [ebp - 0x50]
add edx, dword [ebp - 0x64]
movzx eax, byte [edx]
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x3c], 0xad
mov ecx, dword [ebp - 0x1c]
lea edx, [ecx + ecx + 1]
mov dword [ebp - 0x54], edx
mov eax, dword [ebp - 0x50]
add eax, dword [ebp - 0x54]
movzx ecx, byte [eax]
mov dword [ebp - 0x40], ecx
mov dword [ebp - 0x44], 6
mov edx, dword [ebp - 0x38]
sub edx, dword [ebp - 0x3c]
mov dword [ebp - 0x48], edx
mov eax, dword [ebp - 0x40]
sub eax, dword [ebp - 0x44]
mov dword [ebp - 0x4c], eax
mov ecx, dword [ebp - 0x48]
shl ecx, 4
mov dword [ebp - 0x58], ecx
mov edx, dword [ebp - 0x4c]
mov dword [ebp - 0x5c], edx
mov eax, dword [ebp - 0x58]
or eax, dword [ebp - 0x5c]
mov dword [ebp - 0x60], eax
mov cl, byte [ebp - 0x60]
mov byte [ebp - 0x13], cl
movzx edx, byte [ebp - 0x10]
mov al, byte [ebp + edx - 0x1c0]
mov byte [ebp - 0x11], al
movzx ecx, byte [ebp - 0xd]
movzx edx, byte [ebp + ecx - 0x1c0]
mov dword [ebp - 0xb0], edx
mov al, byte [ebp - 0xd]
add al, 1
mov byte [ebp - 0xd], al
movzx ecx, byte [ebp - 0xe]
add ecx, dword [ebp - 0xb0]
mov byte [ebp - 0xe], cl
movzx edx, byte [ebp - 0xe]
movzx eax, byte [ebp - 0x10]
mov cl, byte [ebp + edx - 0x1c0]
mov byte [ebp + eax - 0x1c0], cl
movzx edx, byte [ebp - 0xf]
movzx eax, byte [ebp - 0xe]
mov cl, byte [ebp + edx - 0x1c0]
mov byte [ebp + eax - 0x1c0], cl
movzx edx, byte [ebp - 0xd]
movzx eax, byte [ebp - 0xf]
mov cl, byte [ebp + edx - 0x1c0]
mov byte [ebp + eax - 0x1c0], cl
movzx edx, byte [ebp - 0xd]
mov al, byte [ebp - 0x11]
mov byte [ebp + edx - 0x1c0], al
movzx ecx, byte [ebp - 0x11]
movzx edx, byte [ebp + ecx - 0x1c0]
movzx eax, byte [ebp - 0x12]
add eax, edx
mov byte [ebp - 0x12], al
movzx ecx, byte [ebp - 0x13]
movzx edx, byte [ebp - 0xe]
movzx eax, byte [ebp + edx - 0x1c0]
movzx edx, byte [ebp - 0xd]
movzx edx, byte [ebp + edx - 0x1c0]
add eax, edx
and eax, 0xff
movzx eax, byte [ebp + eax - 0x1c0]
xor ecx, eax
movzx edx, byte [ebp - 0xf]
movzx eax, byte [ebp + edx - 0x1c0]
movzx edx, byte [ebp - 0x10]
movzx edx, byte [ebp + edx - 0x1c0]
add eax, edx
movzx edx, byte [ebp - 0x12]
movzx edx, byte [ebp + edx - 0x1c0]
add eax, edx
and eax, 0xff
movzx eax, byte [ebp + eax - 0x1c0]
movzx edx, byte [ebp + eax - 0x1c0]
xor ecx, edx
mov byte [ebp - 0xf], cl
mov al, byte [ebp - 0x13]
mov byte [ebp - 0x10], al
mov cl, byte [ebp - 0xf]
mov byte [ebp - 0x15], cl
cmp dword [ebp - 0x1c], 0
jle 0x495e11
movsx dx, byte [ebp - 0x15]
mov eax, dword [ebp - 0x1c]
mov word [ebp + eax*2 - 0x1fe], dx
mov ecx, dword [ebp - 0x2c]
add ecx, 0xb
mov dword [ebp - 0x2c], ecx
mov edx, dword [ebp - 0x1c]
add edx, 1
mov dword [ebp - 0x90], edx
jmp 0x495e37
mov eax, dword [ebp - 0x90]
add eax, 1
mov dword [ebp - 0x90], eax
mov ecx, dword [ebp - 0x90]
cmp ecx, dword [ebp - 0x2c]
jge 0x495fea
mov edx, dword [ebp - 0x1c]
add edx, 1
mov dword [ebp - 0x1c], edx
mov eax, dword [ebp - 0x1c]
shl eax, 1
mov dword [ebp - 0x64], eax
mov ecx, dword [ebp - 0x50]
add ecx, dword [ebp - 0x64]
movzx edx, byte [ecx]
mov dword [ebp - 0x38], edx
mov dword [ebp - 0x3c], 0xad
mov eax, dword [ebp - 0x1c]
lea ecx, [eax + eax + 1]
mov dword [ebp - 0x54], ecx
mov edx, dword [ebp - 0x50]
add edx, dword [ebp - 0x54]
movzx eax, byte [edx]
mov dword [ebp - 0x40], eax
mov dword [ebp - 0x44], 6
mov ecx, dword [ebp - 0x38]
sub ecx, dword [ebp - 0x3c]
mov dword [ebp - 0x48], ecx
mov edx, dword [ebp - 0x40]
sub edx, dword [ebp - 0x44]
mov dword [ebp - 0x4c], edx
mov eax, dword [ebp - 0x48]
shl eax, 4
mov dword [ebp - 0x58], eax
mov ecx, dword [ebp - 0x4c]
mov dword [ebp - 0x5c], ecx
mov edx, dword [ebp - 0x58]
or edx, dword [ebp - 0x5c]
mov dword [ebp - 0x60], edx
mov al, byte [ebp - 0x60]
mov byte [ebp - 0x13], al
movzx ecx, byte [ebp - 0x10]
mov dl, byte [ebp + ecx - 0x1c0]
mov byte [ebp - 0x11], dl
movzx eax, byte [ebp - 0xd]
movzx ecx, byte [ebp + eax - 0x1c0]
mov dword [ebp - 0xb4], ecx
mov dl, byte [ebp - 0xd]
add dl, 1
mov byte [ebp - 0xd], dl
movzx eax, byte [ebp - 0xe]
add eax, dword [ebp - 0xb4]
mov byte [ebp - 0xe], al
movzx ecx, byte [ebp - 0xe]
movzx edx, byte [ebp - 0x10]
mov al, byte [ebp + ecx - 0x1c0]
mov byte [ebp + edx - 0x1c0], al
movzx ecx, byte [ebp - 0xf]
movzx edx, byte [ebp - 0xe]
mov al, byte [ebp + ecx - 0x1c0]
mov byte [ebp + edx - 0x1c0], al
movzx ecx, byte [ebp - 0xd]
movzx edx, byte [ebp - 0xf]
mov al, byte [ebp + ecx - 0x1c0]
mov byte [ebp + edx - 0x1c0], al
movzx ecx, byte [ebp - 0xd]
mov dl, byte [ebp - 0x11]
mov byte [ebp + ecx - 0x1c0], dl
movzx eax, byte [ebp - 0x11]
movzx ecx, byte [ebp + eax - 0x1c0]
movzx edx, byte [ebp - 0x12]
add edx, ecx
mov byte [ebp - 0x12], dl
movzx eax, byte [ebp - 0x13]
movzx ecx, byte [ebp - 0xe]
movzx edx, byte [ebp + ecx - 0x1c0]
movzx ecx, byte [ebp - 0xd]
movzx ecx, byte [ebp + ecx - 0x1c0]
add edx, ecx
and edx, 0xff
movzx edx, byte [ebp + edx - 0x1c0]
xor eax, edx
movzx ecx, byte [ebp - 0xf]
movzx edx, byte [ebp + ecx - 0x1c0]
movzx ecx, byte [ebp - 0x10]
movzx ecx, byte [ebp + ecx - 0x1c0]
add edx, ecx
movzx ecx, byte [ebp - 0x12]
movzx ecx, byte [ebp + ecx - 0x1c0]
add edx, ecx
and edx, 0xff
movzx edx, byte [ebp + edx - 0x1c0]
movzx ecx, byte [ebp + edx - 0x1c0]
xor eax, ecx
mov byte [ebp - 0xf], al
mov dl, byte [ebp - 0x13]
mov byte [ebp - 0x10], dl
mov al, byte [ebp - 0xf]
mov byte [ebp - 0x15], al
cmp dword [ebp - 0x1c], 0
jle 0x495fe5
movsx cx, byte [ebp - 0x15]
mov edx, dword [ebp - 0x1c]
mov word [ebp + edx*2 - 0x1fe], cx
jmp 0x495e28
mov eax, dword [ebp - 0x2c]
add eax, 1
mov dword [ebp - 0x2c], eax
mov ecx, dword [ebp - 0x2c]
add ecx, 0xc
mov dword [ebp - 0x2c], ecx
mov edx, dword [ebp - 0x1c]
add edx, 1
mov dword [ebp - 0x94], edx
jmp 0x496019
mov eax, dword [ebp - 0x94]
add eax, 1
mov dword [ebp - 0x94], eax
mov ecx, dword [ebp - 0x94]
cmp ecx, dword [ebp - 0x2c]
jge 0x4961cc
mov edx, dword [ebp - 0x1c]
add edx, 1
mov dword [ebp - 0x1c], edx
mov eax, dword [ebp - 0x1c]
shl eax, 1
mov dword [ebp - 0x64], eax
mov ecx, dword [ebp - 0x50]
add ecx, dword [ebp - 0x64]
movzx edx, byte [ecx]
mov dword [ebp - 0x38], edx
mov dword [ebp - 0x3c], 0xad
mov eax, dword [ebp - 0x1c]
lea ecx, [eax + eax + 1]
mov dword [ebp - 0x54], ecx
mov edx, dword [ebp - 0x50]
add edx, dword [ebp - 0x54]
movzx eax, byte [edx]
mov dword [ebp - 0x40], eax
mov dword [ebp - 0x44], 6
mov ecx, dword [ebp - 0x38]
sub ecx, dword [ebp - 0x3c]
mov dword [ebp - 0x48], ecx
mov edx, dword [ebp - 0x40]
sub edx, dword [ebp - 0x44]
mov dword [ebp - 0x4c], edx
mov eax, dword [ebp - 0x48]
shl eax, 4
mov dword [ebp - 0x58], eax
mov ecx, dword [ebp - 0x4c]
mov dword [ebp - 0x5c], ecx
mov edx, dword [ebp - 0x58]
or edx, dword [ebp - 0x5c]
mov dword [ebp - 0x60], edx
mov al, byte [ebp - 0x60]
mov byte [ebp - 0x13], al
movzx ecx, byte [ebp - 0x10]
mov dl, byte [ebp + ecx - 0x1c0]
mov byte [ebp - 0x11], dl
movzx eax, byte [ebp - 0xd]
movzx ecx, byte [ebp + eax - 0x1c0]
mov dword [ebp - 0xb8], ecx
mov dl, byte [ebp - 0xd]
add dl, 1
mov byte [ebp - 0xd], dl
movzx eax, byte [ebp - 0xe]
add eax, dword [ebp - 0xb8]
mov byte [ebp - 0xe], al
movzx ecx, byte [ebp - 0xe]
movzx edx, byte [ebp - 0x10]
mov al, byte [ebp + ecx - 0x1c0]
mov byte [ebp + edx - 0x1c0], al
movzx ecx, byte [ebp - 0xf]
movzx edx, byte [ebp - 0xe]
mov al, byte [ebp + ecx - 0x1c0]
mov byte [ebp + edx - 0x1c0], al
movzx ecx, byte [ebp - 0xd]
movzx edx, byte [ebp - 0xf]
mov al, byte [ebp + ecx - 0x1c0]
mov byte [ebp + edx - 0x1c0], al
movzx ecx, byte [ebp - 0xd]
mov dl, byte [ebp - 0x11]
mov byte [ebp + ecx - 0x1c0], dl
movzx eax, byte [ebp - 0x11]
movzx ecx, byte [ebp + eax - 0x1c0]
movzx edx, byte [ebp - 0x12]
add edx, ecx
mov byte [ebp - 0x12], dl
movzx eax, byte [ebp - 0x13]
movzx ecx, byte [ebp - 0xe]
movzx edx, byte [ebp + ecx - 0x1c0]
movzx ecx, byte [ebp - 0xd]
movzx ecx, byte [ebp + ecx - 0x1c0]
add edx, ecx
and edx, 0xff
movzx edx, byte [ebp + edx - 0x1c0]
xor eax, edx
movzx ecx, byte [ebp - 0xf]
movzx edx, byte [ebp + ecx - 0x1c0]
movzx ecx, byte [ebp - 0x10]
movzx ecx, byte [ebp + ecx - 0x1c0]
add edx, ecx
movzx ecx, byte [ebp - 0x12]
movzx ecx, byte [ebp + ecx - 0x1c0]
add edx, ecx
and edx, 0xff
movzx edx, byte [ebp + edx - 0x1c0]
movzx ecx, byte [ebp + edx - 0x1c0]
xor eax, ecx
mov byte [ebp - 0xf], al
mov dl, byte [ebp - 0x13]
mov byte [ebp - 0x10], dl
mov al, byte [ebp - 0xf]
mov byte [ebp - 0x15], al
cmp dword [ebp - 0x1c], 0
jle 0x4961c7
movsx cx, byte [ebp - 0x15]
mov edx, dword [ebp - 0x1c]
mov word [ebp + edx*2 - 0x1fe], cx
jmp 0x49600a
mov eax, dword [ebp - 0x2c]
add eax, 1
mov dword [ebp - 0x2c], eax
mov ecx, dword [ebp - 0x1c]
add ecx, 1
mov dword [ebp - 0x1c], ecx
mov edx, dword [ebp - 0x2c]
add edx, 1
mov dword [ebp - 0x2c], edx
mov eax, dword [ebp - 0x1c]
shl eax, 1
mov dword [ebp - 0x64], eax
mov ecx, dword [ebp - 0x50]
add ecx, dword [ebp - 0x64]
movzx edx, byte [ecx]
mov dword [ebp - 0x38], edx
mov dword [ebp - 0x3c], 0xad
mov eax, dword [ebp - 0x1c]
lea ecx, [eax + eax + 1]
mov dword [ebp - 0x54], ecx
mov edx, dword [ebp - 0x50]
add edx, dword [ebp - 0x54]
movzx eax, byte [edx]
mov dword [ebp - 0x40], eax
mov dword [ebp - 0x44], 6
mov ecx, dword [ebp - 0x38]
sub ecx, dword [ebp - 0x3c]
mov dword [ebp - 0x48], ecx
mov edx, dword [ebp - 0x40]
sub edx, dword [ebp - 0x44]
mov dword [ebp - 0x4c], edx
mov eax, dword [ebp - 0x48]
shl eax, 4
mov dword [ebp - 0x58], eax
mov ecx, dword [ebp - 0x4c]
mov dword [ebp - 0x5c], ecx
mov edx, dword [ebp - 0x58]
or edx, dword [ebp - 0x5c]
mov dword [ebp - 0x60], edx
mov al, byte [ebp - 0x60]
mov byte [ebp - 0x13], al
movzx ecx, byte [ebp - 0x10]
mov dl, byte [ebp + ecx - 0x1c0]
mov byte [ebp - 0x11], dl
movzx eax, byte [ebp - 0xd]
movzx ecx, byte [ebp + eax - 0x1c0]
mov dword [ebp - 0xbc], ecx
mov dl, byte [ebp - 0xd]
add dl, 1
mov byte [ebp - 0xd], dl
movzx eax, byte [ebp - 0xe]
add eax, dword [ebp - 0xbc]
mov byte [ebp - 0xe], al
movzx ecx, byte [ebp - 0xe]
movzx edx, byte [ebp - 0x10]
mov al, byte [ebp + ecx - 0x1c0]
mov byte [ebp + edx - 0x1c0], al
movzx ecx, byte [ebp - 0xf]
movzx edx, byte [ebp - 0xe]
mov al, byte [ebp + ecx - 0x1c0]
mov byte [ebp + edx - 0x1c0], al
movzx ecx, byte [ebp - 0xd]
movzx edx, byte [ebp - 0xf]
mov al, byte [ebp + ecx - 0x1c0]
mov byte [ebp + edx - 0x1c0], al
movzx ecx, byte [ebp - 0xd]
mov dl, byte [ebp - 0x11]
mov byte [ebp + ecx - 0x1c0], dl
movzx eax, byte [ebp - 0x11]
movzx ecx, byte [ebp + eax - 0x1c0]
movzx edx, byte [ebp - 0x12]
add edx, ecx
mov byte [ebp - 0x12], dl
movzx eax, byte [ebp - 0x13]
movzx ecx, byte [ebp - 0xe]
movzx edx, byte [ebp + ecx - 0x1c0]
movzx ecx, byte [ebp - 0xd]
movzx ecx, byte [ebp + ecx - 0x1c0]
add edx, ecx
and edx, 0xff
movzx edx, byte [ebp + edx - 0x1c0]
xor eax, edx
movzx ecx, byte [ebp - 0xf]
movzx edx, byte [ebp + ecx - 0x1c0]
movzx ecx, byte [ebp - 0x10]
movzx ecx, byte [ebp + ecx - 0x1c0]
add edx, ecx
movzx ecx, byte [ebp - 0x12]
movzx ecx, byte [ebp + ecx - 0x1c0]
add edx, ecx
and edx, 0xff
movzx edx, byte [ebp + edx - 0x1c0]
movzx ecx, byte [ebp + edx - 0x1c0]
xor eax, ecx
mov byte [ebp - 0xf], al
mov dl, byte [ebp - 0x13]
mov byte [ebp - 0x10], dl
mov al, byte [ebp - 0xf]
mov byte [ebp - 0x15], al
cmp dword [ebp - 0x1c], 0
jle 0x49637d
movsx cx, byte [ebp - 0x15]
mov edx, dword [ebp - 0x1c]
mov word [ebp + edx*2 - 0x1fe], cx
mov eax, dword [ebp - 0x1c]
add eax, 1
mov dword [ebp - 0x1c], eax
mov ecx, dword [ebp - 0x2c]
add ecx, 1
mov dword [ebp - 0x2c], ecx
mov edx, dword [ebp - 0x1c]
shl edx, 1
mov dword [ebp - 0x64], edx
mov eax, dword [ebp - 0x50]
add eax, dword [ebp - 0x64]
movzx ecx, byte [eax]
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x3c], 0xad
mov edx, dword [ebp - 0x1c]
lea eax, [edx + edx + 1]
mov dword [ebp - 0x54], eax
mov ecx, dword [ebp - 0x50]
add ecx, dword [ebp - 0x54]
movzx edx, byte [ecx]
mov dword [ebp - 0x40], edx
mov dword [ebp - 0x44], 6
mov eax, dword [ebp - 0x38]
sub eax, dword [ebp - 0x3c]
mov dword [ebp - 0x48], eax
mov ecx, dword [ebp - 0x40]
sub ecx, dword [ebp - 0x44]
mov dword [ebp - 0x4c], ecx
mov edx, dword [ebp - 0x48]
shl edx, 4
mov dword [ebp - 0x58], edx
mov eax, dword [ebp - 0x4c]
mov dword [ebp - 0x5c], eax
mov ecx, dword [ebp - 0x58]
or ecx, dword [ebp - 0x5c]
mov dword [ebp - 0x60], ecx
mov dl, byte [ebp - 0x60]
mov byte [ebp - 0x13], dl
movzx eax, byte [ebp - 0x10]
mov cl, byte [ebp + eax - 0x1c0]
mov byte [ebp - 0x11], cl
movzx edx, byte [ebp - 0xd]
movzx eax, byte [ebp + edx - 0x1c0]
mov dword [ebp - 0xc0], eax
mov cl, byte [ebp - 0xd]
add cl, 1
mov byte [ebp - 0xd], cl
movzx edx, byte [ebp - 0xe]
add edx, dword [ebp - 0xc0]
mov byte [ebp - 0xe], dl
movzx eax, byte [ebp - 0xe]
movzx ecx, byte [ebp - 0x10]
mov dl, byte [ebp + eax - 0x1c0]
mov byte [ebp + ecx - 0x1c0], dl
movzx eax, byte [ebp - 0xf]
movzx ecx, byte [ebp - 0xe]
mov dl, byte [ebp + eax - 0x1c0]
mov byte [ebp + ecx - 0x1c0], dl
movzx eax, byte [ebp - 0xd]
movzx ecx, byte [ebp - 0xf]
mov dl, byte [ebp + eax - 0x1c0]
mov byte [ebp + ecx - 0x1c0], dl
movzx eax, byte [ebp - 0xd]
mov cl, byte [ebp - 0x11]
mov byte [ebp + eax - 0x1c0], cl
movzx edx, byte [ebp - 0x11]
movzx eax, byte [ebp + edx - 0x1c0]
movzx ecx, byte [ebp - 0x12]
add ecx, eax
mov byte [ebp - 0x12], cl
movzx edx, byte [ebp - 0x13]
movzx eax, byte [ebp - 0xe]
movzx ecx, byte [ebp + eax - 0x1c0]
movzx eax, byte [ebp - 0xd]
movzx eax, byte [ebp + eax - 0x1c0]
add ecx, eax
and ecx, 0xff
movzx ecx, byte [ebp + ecx - 0x1c0]
xor edx, ecx
movzx eax, byte [ebp - 0xf]
movzx ecx, byte [ebp + eax - 0x1c0]
movzx eax, byte [ebp - 0x10]
movzx eax, byte [ebp + eax - 0x1c0]
add ecx, eax
movzx eax, byte [ebp - 0x12]
movzx eax, byte [ebp + eax - 0x1c0]
add ecx, eax
and ecx, 0xff
movzx ecx, byte [ebp + ecx - 0x1c0]
movzx eax, byte [ebp + ecx - 0x1c0]
xor edx, eax
mov byte [ebp - 0xf], dl
mov cl, byte [ebp - 0x13]
mov byte [ebp - 0x10], cl
mov dl, byte [ebp - 0xf]
mov byte [ebp - 0x15], dl
cmp dword [ebp - 0x1c], 0
jle 0x496525
movsx ax, byte [ebp - 0x15]
mov ecx, dword [ebp - 0x1c]
mov word [ebp + ecx*2 - 0x1fe], ax
mov edx, 2
imul eax, edx, 0x1a
mov dword [ebp - 0xa0], eax
cmp dword [ebp - 0xa0], 0x36
jae 0x49653e
jmp 0x496544
call fcn.0051c285
nop
xor ecx, ecx
mov edx, dword [ebp - 0xa0]
mov word [ebp + edx - 0x1fc], cx
jmp 0x4965ab
mov dword [ebp - 0x88], 0
jmp 0x496571
mov eax, dword [ebp - 0x88]
add eax, 1
mov dword [ebp - 0x88], eax
cmp dword [ebp - 0x88], 0x1b
jge 0x4965ab
mov ecx, dword [ebp - 0x88]
shl ecx, 1
mov dword [ebp - 0xa4], ecx
cmp dword [ebp - 0xa4], 0x36
jae 0x496593
jmp 0x496599
call fcn.0051c285
nop
xor edx, edx
mov eax, dword [ebp - 0xa4]
mov word [ebp + eax - 0x1fc], dx
jmp 0x496562
call fcn.005625f5
cdq
mov ecx, 0x1a
idiv ecx
mov ax, word [ebp + edx*2 - 0x1fc]
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0051bf16
mov esp, ebp
pop ebp
ret