Function at 0x464cd0
Capabilities:
Encrypt data using speck

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x200
mov eax, dword [0x5f7268]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
mov dword [ebp - 0x1a0], ecx
lea eax, [ebp - 8]
push eax
call fcn.00544f39
add esp, 4
mov eax, dword [ebp - 8]
xor edx, edx
mov ecx, 0x1a
div ecx
mov dword [ebp - 8], edx
lea edx, [ebp - 0xc]
push edx
call fcn.00544f39
add esp, 4
mov eax, dword [ebp - 0xc]
xor edx, edx
mov ecx, 0x1a
div ecx
mov dword [ebp - 0xc], edx
mov edx, dword [ebp - 0xc]
push edx
mov eax, dword [ebp - 8]
push eax
mov ecx, dword [ebp - 0x1a0]
call fcn.0047de00
mov dword [ebp - 0x1c4], eax
mov dword [ebp - 0x10], 0
mov dword [ebp - 0x14], 0
xorps xmm0, xmm0
movsd qword [ebp - 0x78], xmm0
xorps xmm0, xmm0
movsd qword [ebp - 0x70], xmm0
xorps xmm0, xmm0
movsd qword [ebp - 0x70], xmm0
jmp 0x464b35
movsd xmm0, qword [ebp - 0x70]
addsd xmm0, qword [0x5540f8]
movsd qword [ebp - 0x70], xmm0
movsd xmm0, qword [0x554af8]
comisd xmm0, xmmword [ebp - 0x70]
jbe 0x464bbb
movsd xmm0, qword [0x554a28]
mulsd xmm0, qword [ebp - 0x70]
mulsd xmm0, qword [ebp - 0x70]
movsd xmm1, qword [ebp - 0x70]
mulsd xmm1, qword [ebp - 0x70]
subsd xmm0, xmm1
movsd xmm1, qword [0x554848]
mulsd xmm1, qword [ebp - 0x70]
mulsd xmm1, qword [ebp - 0x70]
addsd xmm1, qword [0x554918]
divsd xmm0, xmm1
add dl, dh
divps xmm0, xmm1
sal edx, 0xf
pop eax
addsd xmm0, qword [ebp - 0x78]
movsd qword [ebp - 0x78], xmm0
inc ebp
mov dl, dh
movups xmmword [ebp - 0x78], xmm0
inc ebp
mov dl, dh
movsd xmm0, qword [ebp - 0x78]
movups xmm0, xmmword [ebp - 0x78]
mov byte [esi + 0xf], ah
das
comisd xmm0, xmmword [0x554968]
add eax, 0x554968
push ebp
add byte [esi + 0x1b], dh
jbe 0x464bb6
movsd xmm0, qword [0x5547c8]
adc byte [0x5547c8], al
push ebp
add dl, dh
mulsd xmm0, qword [ebp - 0x70]
mulps xmm0, xmmword [ebp - 0x70]
movsd xmm1, qword [ebp - 0x78]
subsd xmm1, xmm0
mov dl, dh
subps xmm1, xmm0
pop esp
enter 0xff2, 0x11
dec ebp
movsd qword [ebp - 0x78], xmm1
mov cl, ch
push 0xfffffff
push edi
shl byte [esi + 0xf], 0x2f
inc ebp
mov byte [esi + 0x51], dh
jmp 0x464b23
xorps xmm0, xmm0
comisd xmm0, xmmword [ebp - 0x78]
jbe 0x464c16
and esp, dword [esi]
insb byte es:[edi], dx
pushal
pop ebx
xor byte [edi + 0x61], al
and al, 0x30
je 0x464c1b
push ebp
xor eax, 0x30446253
sub eax, 0x9c212064
jl 0x464b7d
jno 0x464b85
jo 0x464b82
jl 0x464b81
jno 0x464b8a
insd dword es:[edi], dx
cwde
je 0x464b8d
jnp 0x464b85
jo 0x464b90
jae 0x464b94
jb 0x464b97
ja 0x464b90
outsb dx, byte [esi]
mov eax, dword [0xa76fa372]
jne 0x464ba1
js 0x464b9b
ja 0x464b9d
insd dword es:[edi], dx
mov al, byte [0xa376a676]
jo 0x464bac
jns 0x464ba4
jb 0x464baf
jl 0x464bb5
outsb dx, byte [esi]
cmpsd dword [esi], dword es:[edi]
insd dword es:[edi], dx
jmp 0x465d5d
mov dword [ebp - 0x10], 0x464bdb
mov dword [ebp - 0x14], 0x464bc5
mov ecx, dword [ebp - 0x10]
mov dword [ebp - 0x58], ecx
mov edx, dword [ebp - 0x14]
inc esi
add bh, al
inc ebp
in al, dx
lds ecx, [ebx + 0x46]
add byte [ebx + 0x4d89f04d], cl
test al, 0x8b
push ebp
in al, dx
mov dword [ebp - 0x1a4], edx
mov byte [ebp - 0x5d], 0x1a
mov dword [ebp - 0x2c], 0
jmp 0x464c49
mov eax, dword [ebp - 0x2c]
add eax, 1
mov dword [ebp - 0x2c], eax
cmp dword [ebp - 0x2c], 0x100
jae 0x464c61
mov ecx, dword [ebp - 0x2c]
mov dl, byte [ebp - 0x2c]
mov byte [ebp + ecx - 0x19c], dl
jmp 0x464c40
mov dword [ebp - 0x68], 0
mov byte [ebp - 0x1d], 0
mov dword [ebp - 0x2c], 0xff
jmp 0x464c7e
mov eax, dword [ebp - 0x2c]
sub eax, 1
mov dword [ebp - 0x2c], eax
cmp dword [ebp - 0x2c], 0
jbe 0x464e54
mov dword [ebp - 0x8c], 0
mov dword [ebp - 0x7c], 1
mov ecx, dword [ebp - 0x7c]
cmp ecx, dword [ebp - 0x2c]
jae 0x464cad
mov edx, dword [ebp - 0x7c]
lea eax, [edx + edx + 1]
mov dword [ebp - 0x7c], eax
jmp 0x464c99
mov ecx, dword [ebp - 0x68]
mov dword [ebp - 0x90], ecx
cmp dword [ebp - 0x90], 3
ja case.default.0x464cc9
mov edx, dword [ebp - 0x90]
jmp dword [edx*4 + 0x465dd4]
movzx eax, byte [ebp - 0x1d]
movzx ebx, byte [ebp + eax - 0x19c]
movsd xmm0, qword [ebp - 0x78]
call fcn.0053fc00
and eax, 0xff
add ebx, eax
mov byte [ebp - 0x1d], bl
jmp 0x464d82
movzx ecx, byte [ebp - 0x1d]
movzx ebx, byte [ebp + ecx - 0x19c]
movsd xmm0, qword [ebp - 0x78]
call fcn.0053fc00
shr eax, 8
and eax, 0xff
add ebx, eax
mov byte [ebp - 0x1d], bl
jmp 0x464d82
movzx edx, byte [ebp - 0x1d]
movzx ebx, byte [ebp + edx - 0x19c]
movsd xmm0, qword [ebp - 0x78]
call fcn.0053fc00
shr eax, 0x10
and eax, 0xff
add ebx, eax
mov byte [ebp - 0x1d], bl
jmp 0x464d82
movzx eax, byte [ebp - 0x1d]
movzx ebx, byte [ebp + eax - 0x19c]
movsd xmm0, qword [ebp - 0x78]
call fcn.0053fc00
shr eax, 0x18
and eax, 0xff
add ebx, eax
mov byte [ebp - 0x1d], bl
jmp 0x464d82
movzx ecx, byte [ebp - 0x1d]
movzx edx, byte [ebp + ecx - 0x19c]
mov eax, dword [ebp - 0x1a4]
add eax, dword [ebp - 0x68]
movzx ecx, byte [eax - 4]
add edx, ecx
mov byte [ebp - 0x1d], dl
mov edx, dword [ebp - 0x68]
add edx, 1
mov dword [ebp - 0x68], edx
movzx eax, byte [ebp - 0x5d]
cmp dword [ebp - 0x68], eax
jb 0x464da8
mov dword [ebp - 0x68], 0
movzx ecx, byte [ebp - 0x5d]
movzx edx, byte [ebp - 0x1d]
add edx, ecx
mov byte [ebp - 0x1d], dl
movzx eax, byte [ebp - 0x1d]
and eax, dword [ebp - 0x7c]
mov dword [ebp - 0x64], eax
mov ecx, dword [ebp - 0x8c]
add ecx, 1
mov dword [ebp - 0x8c], ecx
cmp dword [ebp - 0x8c], 0xb
jbe 0x464dd5
mov eax, dword [ebp - 0x64]
xor edx, edx
div dword [ebp - 0x2c]
mov dword [ebp - 0x64], edx
mov edx, dword [ebp - 0x64]
cmp edx, dword [ebp - 0x2c]
ja 0x464cad
mov eax, dword [ebp - 0x2c]
cmp eax, dword [ebp - 0x64]
je 0x464e4f
mov ecx, dword [ebp - 0x64]
movzx edx, byte [ebp + ecx - 0x19c]
mov eax, dword [ebp - 0x2c]
movzx ecx, byte [ebp + eax - 0x19c]
xor ecx, edx
mov edx, dword [ebp - 0x2c]
mov byte [ebp + edx - 0x19c], cl
mov eax, dword [ebp - 0x2c]
movzx ecx, byte [ebp + eax - 0x19c]
mov edx, dword [ebp - 0x64]
movzx eax, byte [ebp + edx - 0x19c]
xor eax, ecx
mov ecx, dword [ebp - 0x64]
mov byte [ebp + ecx - 0x19c], al
mov edx, dword [ebp - 0x64]
movzx eax, byte [ebp + edx - 0x19c]
mov ecx, dword [ebp - 0x2c]
movzx edx, byte [ebp + ecx - 0x19c]
xor edx, eax
mov eax, dword [ebp - 0x2c]
mov byte [ebp + eax - 0x19c], dl
jmp 0x464c75
mov ecx, 1
shl ecx, 0
mov dl, byte [ebp + ecx - 0x19c]
mov byte [ebp - 0x15], dl
mov eax, 1
imul ecx, eax, 3
mov dl, byte [ebp + ecx - 0x19c]
mov byte [ebp - 0x16], dl
mov eax, 1
imul ecx, eax, 5
mov dl, byte [ebp + ecx - 0x19c]
mov byte [ebp - 0x1a], dl
mov eax, 1
imul ecx, eax, 7
mov dl, byte [ebp + ecx - 0x19c]
mov byte [ebp - 0x17], dl
movzx eax, byte [ebp - 0x1d]
mov cl, byte [ebp + eax - 0x19c]
mov byte [ebp - 0x18], cl
mov dword [ebp - 0x94], 0x36
cmp dword [ebp - 0x94], 2
jle 0x465d18
mov edx, dword [ebp - 0x94]
and edx, 1
jne 0x465d18
mov dword [ebp - 0x24], 0
mov dword [ebp - 0x28], 0
mov eax, dword [ebp - 0x28]
add eax, 1
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x54], 0
mov ecx, dword [ebp - 0x24]
shl ecx, 1
mov dword [ebp - 0x54], ecx
mov dword [ebp - 0x3c], 0
mov edx, dword [ebp - 0x58]
add edx, dword [ebp - 0x54]
movzx eax, byte [edx]
add eax, dword [ebp - 0x3c]
mov dword [ebp - 0x3c], eax
mov dword [ebp - 0x40], 0
mov ecx, dword [ebp - 0x40]
add ecx, 0x98
mov dword [ebp - 0x40], ecx
mov dword [ebp - 0x5c], 0
mov edx, dword [ebp - 0x24]
lea eax, [edx + edx + 1]
mov dword [ebp - 0x5c], eax
mov dword [ebp - 0x44], 0
mov ecx, dword [ebp - 0x58]
add ecx, dword [ebp - 0x5c]
movzx edx, byte [ecx]
add edx, dword [ebp - 0x44]
mov dword [ebp - 0x44], edx
mov dword [ebp - 0x30], 0
mov eax, dword [ebp - 0x30]
add eax, 0x6d
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x34], 0
mov ecx, dword [ebp - 0x3c]
sub ecx, dword [ebp - 0x40]
add ecx, dword [ebp - 0x34]
mov dword [ebp - 0x34], ecx
mov dword [ebp - 0x38], 0
mov edx, dword [ebp - 0x44]
sub edx, dword [ebp - 0x30]
add edx, dword [ebp - 0x38]
mov dword [ebp - 0x38], edx
mov dword [ebp - 0x48], 0
mov eax, dword [ebp - 0x34]
shl eax, 4
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x4c], 0
mov ecx, dword [ebp - 0x38]
mov dword [ebp - 0x4c], ecx
mov dword [ebp - 0x50], 0
mov edx, dword [ebp - 0x48]
or edx, dword [ebp - 0x4c]
mov dword [ebp - 0x50], edx
mov byte [ebp - 0x1b], 0
mov al, byte [ebp - 0x50]
mov byte [ebp - 0x1b], al
mov byte [ebp - 0x19], 0
movzx ecx, byte [ebp - 0x18]
mov dl, byte [ebp + ecx - 0x19c]
mov byte [ebp - 0x19], dl
movzx eax, byte [ebp - 0x15]
movzx ecx, byte [ebp + eax - 0x19c]
mov dword [ebp - 0x1bc], ecx
mov dl, byte [ebp - 0x15]
add dl, 1
mov byte [ebp - 0x15], dl
movzx eax, byte [ebp - 0x16]
add eax, dword [ebp - 0x1bc]
mov byte [ebp - 0x16], al
movzx ecx, byte [ebp - 0x16]
movzx edx, byte [ebp - 0x18]
mov al, byte [ebp + ecx - 0x19c]
mov byte [ebp + edx - 0x19c], al
movzx ecx, byte [ebp - 0x17]
movzx edx, byte [ebp - 0x16]
mov al, byte [ebp + ecx - 0x19c]
mov byte [ebp + edx - 0x19c], al
movzx ecx, byte [ebp - 0x15]
movzx edx, byte [ebp - 0x17]
mov al, byte [ebp + ecx - 0x19c]
mov byte [ebp + edx - 0x19c], al
movzx ecx, byte [ebp - 0x15]
mov dl, byte [ebp - 0x19]
mov byte [ebp + ecx - 0x19c], dl
movzx eax, byte [ebp - 0x19]
movzx ecx, byte [ebp + eax - 0x19c]
movzx edx, byte [ebp - 0x1a]
add edx, ecx
mov byte [ebp - 0x1a], dl
movzx eax, byte [ebp - 0x1b]
movzx ecx, byte [ebp - 0x16]
movzx edx, byte [ebp + ecx - 0x19c]
movzx ecx, byte [ebp - 0x15]
movzx ecx, byte [ebp + ecx - 0x19c]
add edx, ecx
and edx, 0xff
movzx edx, byte [ebp + edx - 0x19c]
xor eax, edx
movzx ecx, byte [ebp - 0x17]
movzx edx, byte [ebp + ecx - 0x19c]
movzx ecx, byte [ebp - 0x18]
movzx ecx, byte [ebp + ecx - 0x19c]
add edx, ecx
movzx ecx, byte [ebp - 0x1a]
movzx ecx, byte [ebp + ecx - 0x19c]
add edx, ecx
and edx, 0xff
movzx edx, byte [ebp + edx - 0x19c]
movzx ecx, byte [ebp + edx - 0x19c]
xor eax, ecx
mov byte [ebp - 0x17], al
mov dl, byte [ebp - 0x1b]
mov byte [ebp - 0x18], dl
mov al, byte [ebp - 0x17]
mov byte [ebp - 0x1c], al
cmp dword [ebp - 0x24], 0
jle 0x4650e5
movsx cx, byte [ebp - 0x1c]
mov edx, dword [ebp - 0x24]
mov word [ebp + edx*2 - 0x202], cx
mov eax, dword [ebp - 0x28]
add eax, 0xa
mov dword [ebp - 0x28], eax
mov ecx, dword [ebp - 0x24]
add ecx, 1
mov dword [ebp - 0x84], ecx
jmp 0x46510b
mov edx, dword [ebp - 0x84]
add edx, 1
mov dword [ebp - 0x84], edx
mov eax, dword [ebp - 0x84]
cmp eax, dword [ebp - 0x28]
jge 0x4652be
mov ecx, dword [ebp - 0x24]
add ecx, 1
mov dword [ebp - 0x24], ecx
mov edx, dword [ebp - 0x24]
shl edx, 1
mov dword [ebp - 0x54], edx
mov eax, dword [ebp - 0x58]
add eax, dword [ebp - 0x54]
movzx ecx, byte [eax]
mov dword [ebp - 0x3c], ecx
mov dword [ebp - 0x40], 0x98
mov edx, dword [ebp - 0x24]
lea eax, [edx + edx + 1]
mov dword [ebp - 0x5c], eax
mov ecx, dword [ebp - 0x58]
add ecx, dword [ebp - 0x5c]
movzx edx, byte [ecx]
mov dword [ebp - 0x44], edx
mov dword [ebp - 0x30], 0x6d
mov eax, dword [ebp - 0x3c]
sub eax, dword [ebp - 0x40]
mov dword [ebp - 0x34], eax
mov ecx, dword [ebp - 0x44]
sub ecx, dword [ebp - 0x30]
mov dword [ebp - 0x38], ecx
mov edx, dword [ebp - 0x34]
shl edx, 4
mov dword [ebp - 0x48], edx
mov eax, dword [ebp - 0x38]
mov dword [ebp - 0x4c], eax
mov ecx, dword [ebp - 0x48]
or ecx, dword [ebp - 0x4c]
mov dword [ebp - 0x50], ecx
mov dl, byte [ebp - 0x50]
mov byte [ebp - 0x1b], dl
movzx eax, byte [ebp - 0x18]
mov cl, byte [ebp + eax - 0x19c]
mov byte [ebp - 0x19], cl
movzx edx, byte [ebp - 0x15]
movzx eax, byte [ebp + edx - 0x19c]
mov dword [ebp - 0x1a8], eax
mov cl, byte [ebp - 0x15]
add cl, 1
mov byte [ebp - 0x15], cl
movzx edx, byte [ebp - 0x16]
add edx, dword [ebp - 0x1a8]
mov byte [ebp - 0x16], dl
movzx eax, byte [ebp - 0x16]
movzx ecx, byte [ebp - 0x18]
mov dl, byte [ebp + eax - 0x19c]
mov byte [ebp + ecx - 0x19c], dl
movzx eax, byte [ebp - 0x17]
movzx ecx, byte [ebp - 0x16]
mov dl, byte [ebp + eax - 0x19c]
mov byte [ebp + ecx - 0x19c], dl
movzx eax, byte [ebp - 0x15]
movzx ecx, byte [ebp - 0x17]
mov dl, byte [ebp + eax - 0x19c]
mov byte [ebp + ecx - 0x19c], dl
movzx eax, byte [ebp - 0x15]
mov cl, byte [ebp - 0x19]
mov byte [ebp + eax - 0x19c], cl
movzx edx, byte [ebp - 0x19]
movzx eax, byte [ebp + edx - 0x19c]
movzx ecx, byte [ebp - 0x1a]
add ecx, eax
mov byte [ebp - 0x1a], cl
movzx edx, byte [ebp - 0x1b]
movzx eax, byte [ebp - 0x16]
movzx ecx, byte [ebp + eax - 0x19c]
movzx eax, byte [ebp - 0x15]
movzx eax, byte [ebp + eax - 0x19c]
add ecx, eax
and ecx, 0xff
movzx ecx, byte [ebp + ecx - 0x19c]
xor edx, ecx
movzx eax, byte [ebp - 0x17]
movzx ecx, byte [ebp + eax - 0x19c]
movzx eax, byte [ebp - 0x18]
movzx eax, byte [ebp + eax - 0x19c]
add ecx, eax
movzx eax, byte [ebp - 0x1a]
movzx eax, byte [ebp + eax - 0x19c]
add ecx, eax
and ecx, 0xff
movzx ecx, byte [ebp + ecx - 0x19c]
movzx eax, byte [ebp + ecx - 0x19c]
xor edx, eax
mov byte [ebp - 0x17], dl
mov cl, byte [ebp - 0x1b]
mov byte [ebp - 0x18], cl
mov dl, byte [ebp - 0x17]
mov byte [ebp - 0x1c], dl
cmp dword [ebp - 0x24], 0
jle 0x4652b9
movsx ax, byte [ebp - 0x1c]
mov ecx, dword [ebp - 0x24]
mov word [ebp + ecx*2 - 0x202], ax
jmp 0x4650fc
mov edx, dword [ebp - 0x28]
add edx, 1
mov dword [ebp - 0x28], edx
mov eax, dword [ebp - 0x24]
add eax, 1
mov dword [ebp - 0x24], eax
mov ecx, dword [ebp - 0x28]
add ecx, 1
mov dword [ebp - 0x28], ecx
mov edx, dword [ebp - 0x24]
shl edx, 1
mov dword [ebp - 0x54], edx
mov eax, dword [ebp - 0x58]
add eax, dword [ebp - 0x54]
movzx ecx, byte [eax]
mov dword [ebp - 0x3c], ecx
mov dword [ebp - 0x40], 0x98
mov edx, dword [ebp - 0x24]
lea eax, [edx + edx + 1]
mov dword [ebp - 0x5c], eax
mov ecx, dword [ebp - 0x58]
add ecx, dword [ebp - 0x5c]
movzx edx, byte [ecx]
mov dword [ebp - 0x44], edx
mov dword [ebp - 0x30], 0x6d
mov eax, dword [ebp - 0x3c]
sub eax, dword [ebp - 0x40]
mov dword [ebp - 0x34], eax
mov ecx, dword [ebp - 0x44]
sub ecx, dword [ebp - 0x30]
mov dword [ebp - 0x38], ecx
mov edx, dword [ebp - 0x34]
shl edx, 4
mov dword [ebp - 0x48], edx
mov eax, dword [ebp - 0x38]
mov dword [ebp - 0x4c], eax
mov ecx, dword [ebp - 0x48]
or ecx, dword [ebp - 0x4c]
mov dword [ebp - 0x50], ecx
mov dl, byte [ebp - 0x50]
mov byte [ebp - 0x1b], dl
movzx eax, byte [ebp - 0x18]
mov cl, byte [ebp + eax - 0x19c]
mov byte [ebp - 0x19], cl
movzx edx, byte [ebp - 0x15]
movzx eax, byte [ebp + edx - 0x19c]
mov dword [ebp - 0x1ac], eax
mov cl, byte [ebp - 0x15]
add cl, 1
mov byte [ebp - 0x15], cl
movzx edx, byte [ebp - 0x16]
add edx, dword [ebp - 0x1ac]
mov byte [ebp - 0x16], dl
movzx eax, byte [ebp - 0x16]
movzx ecx, byte [ebp - 0x18]
mov dl, byte [ebp + eax - 0x19c]
mov byte [ebp + ecx - 0x19c], dl
movzx eax, byte [ebp - 0x17]
movzx ecx, byte [ebp - 0x16]
mov dl, byte [ebp + eax - 0x19c]
mov byte [ebp + ecx - 0x19c], dl
movzx eax, byte [ebp - 0x15]
movzx ecx, byte [ebp - 0x17]
mov dl, byte [ebp + eax - 0x19c]
mov byte [ebp + ecx - 0x19c], dl
movzx eax, byte [ebp - 0x15]
mov cl, byte [ebp - 0x19]
mov byte [ebp + eax - 0x19c], cl
movzx edx, byte [ebp - 0x19]
movzx eax, byte [ebp + edx - 0x19c]
movzx ecx, byte [ebp - 0x1a]
add ecx, eax
mov byte [ebp - 0x1a], cl
movzx edx, byte [ebp - 0x1b]
movzx eax, byte [ebp - 0x16]
movzx ecx, byte [ebp + eax - 0x19c]
movzx eax, byte [ebp - 0x15]
movzx eax, byte [ebp + eax - 0x19c]
add ecx, eax
and ecx, 0xff
movzx ecx, byte [ebp + ecx - 0x19c]
xor edx, ecx
movzx eax, byte [ebp - 0x17]
movzx ecx, byte [ebp + eax - 0x19c]
movzx eax, byte [ebp - 0x18]
movzx eax, byte [ebp + eax - 0x19c]
add ecx, eax
movzx eax, byte [ebp - 0x1a]
movzx eax, byte [ebp + eax - 0x19c]
add ecx, eax
and ecx, 0xff
movzx ecx, byte [ebp + ecx - 0x19c]
movzx eax, byte [ebp + ecx - 0x19c]
xor edx, eax
mov byte [ebp - 0x17], dl
mov cl, byte [ebp - 0x1b]
mov byte [ebp - 0x18], cl
mov dl, byte [ebp - 0x17]
mov byte [ebp - 0x1c], dl
cmp dword [ebp - 0x24], 0
jle 0x46546f
movsx ax, byte [ebp - 0x1c]
mov ecx, dword [ebp - 0x24]
mov word [ebp + ecx*2 - 0x202], ax
mov edx, dword [ebp - 0x28]
add edx, 0xb
mov dword [ebp - 0x28], edx
mov eax, dword [ebp - 0x24]
add eax, 1
mov dword [ebp - 0x88], eax
jmp 0x465495
mov ecx, dword [ebp - 0x88]
add ecx, 1
mov dword [ebp - 0x88], ecx
mov edx, dword [ebp - 0x88]
cmp edx, dword [ebp - 0x28]
jge 0x465645
mov eax, dword [ebp - 0x24]
add eax, 1
mov dword [ebp - 0x24], eax
mov ecx, dword [ebp - 0x24]
shl ecx, 1
mov dword [ebp - 0x54], ecx
mov edx, dword [ebp - 0x58]
add edx, dword [ebp - 0x54]
movzx eax, byte [edx]
mov dword [ebp - 0x3c], eax
mov dword [ebp - 0x40], 0x98
mov ecx, dword [ebp - 0x24]
lea edx, [ecx + ecx + 1]
mov dword [ebp - 0x5c], edx
mov eax, dword [ebp - 0x58]
add eax, dword [ebp - 0x5c]
movzx ecx, byte [eax]
mov dword [ebp - 0x44], ecx
mov dword [ebp - 0x30], 0x6d
mov edx, dword [ebp - 0x3c]
sub edx, dword [ebp - 0x40]
mov dword [ebp - 0x34], edx
mov eax, dword [ebp - 0x44]
sub eax, dword [ebp - 0x30]
mov dword [ebp - 0x38], eax
mov ecx, dword [ebp - 0x34]
shl ecx, 4
mov dword [ebp - 0x48], ecx
mov edx, dword [ebp - 0x38]
mov dword [ebp - 0x4c], edx
mov eax, dword [ebp - 0x48]
or eax, dword [ebp - 0x4c]
mov dword [ebp - 0x50], eax
mov cl, byte [ebp - 0x50]
mov byte [ebp - 0x1b], cl
movzx edx, byte [ebp - 0x18]
mov al, byte [ebp + edx - 0x19c]
mov byte [ebp - 0x19], al
movzx ecx, byte [ebp - 0x15]
movzx edx, byte [ebp + ecx - 0x19c]
mov dword [ebp - 0x1b0], edx
mov al, byte [ebp - 0x15]
add al, 1
mov byte [ebp - 0x15], al
movzx ecx, byte [ebp - 0x16]
add ecx, dword [ebp - 0x1b0]
mov byte [ebp - 0x16], cl
movzx edx, byte [ebp - 0x16]
movzx eax, byte [ebp - 0x18]
mov cl, byte [ebp + edx - 0x19c]
mov byte [ebp + eax - 0x19c], cl
movzx edx, byte [ebp - 0x17]
movzx eax, byte [ebp - 0x16]
mov cl, byte [ebp + edx - 0x19c]
mov byte [ebp + eax - 0x19c], cl
movzx edx, byte [ebp - 0x15]
movzx eax, byte [ebp - 0x17]
mov cl, byte [ebp + edx - 0x19c]
mov byte [ebp + eax - 0x19c], cl
movzx edx, byte [ebp - 0x15]
mov al, byte [ebp - 0x19]
mov byte [ebp + edx - 0x19c], al
movzx ecx, byte [ebp - 0x19]
movzx edx, byte [ebp + ecx - 0x19c]
movzx eax, byte [ebp - 0x1a]
add eax, edx
mov byte [ebp - 0x1a], al
movzx ecx, byte [ebp - 0x1b]
movzx edx, byte [ebp - 0x16]
movzx eax, byte [ebp + edx - 0x19c]
movzx edx, byte [ebp - 0x15]
movzx edx, byte [ebp + edx - 0x19c]
add eax, edx
and eax, 0xff
movzx eax, byte [ebp + eax - 0x19c]
xor ecx, eax
movzx edx, byte [ebp - 0x17]
movzx eax, byte [ebp + edx - 0x19c]
movzx edx, byte [ebp - 0x18]
movzx edx, byte [ebp + edx - 0x19c]
add eax, edx
movzx edx, byte [ebp - 0x1a]
movzx edx, byte [ebp + edx - 0x19c]
add eax, edx
and eax, 0xff
movzx eax, byte [ebp + eax - 0x19c]
movzx edx, byte [ebp + eax - 0x19c]
xor ecx, edx
mov byte [ebp - 0x17], cl
mov al, byte [ebp - 0x1b]
mov byte [ebp - 0x18], al
mov cl, byte [ebp - 0x17]
mov byte [ebp - 0x1c], cl
cmp dword [ebp - 0x24], 0
jle 0x465640
movsx dx, byte [ebp - 0x1c]
mov eax, dword [ebp - 0x24]
mov word [ebp + eax*2 - 0x202], dx
jmp 0x465486
mov ecx, dword [ebp - 0x28]
add ecx, 1
mov dword [ebp - 0x28], ecx
mov edx, dword [ebp - 0x24]
add edx, 1
mov dword [ebp - 0x24], edx
mov eax, dword [ebp - 0x28]
add eax, 1
mov dword [ebp - 0x28], eax
mov ecx, dword [ebp - 0x24]
shl ecx, 1
mov dword [ebp - 0x54], ecx
mov edx, dword [ebp - 0x58]
add edx, dword [ebp - 0x54]
movzx eax, byte [edx]
mov dword [ebp - 0x3c], eax
mov dword [ebp - 0x40], 0x98
mov ecx, dword [ebp - 0x24]
lea edx, [ecx + ecx + 1]
mov dword [ebp - 0x5c], edx
mov eax, dword [ebp - 0x58]
add eax, dword [ebp - 0x5c]
movzx ecx, byte [eax]
mov dword [ebp - 0x44], ecx
mov dword [ebp - 0x30], 0x6d
mov edx, dword [ebp - 0x3c]
sub edx, dword [ebp - 0x40]
mov dword [ebp - 0x34], edx
mov eax, dword [ebp - 0x44]
sub eax, dword [ebp - 0x30]
mov dword [ebp - 0x38], eax
mov ecx, dword [ebp - 0x34]
shl ecx, 4
mov dword [ebp - 0x48], ecx
mov edx, dword [ebp - 0x38]
mov dword [ebp - 0x4c], edx
mov eax, dword [ebp - 0x48]
or eax, dword [ebp - 0x4c]
mov dword [ebp - 0x50], eax
mov cl, byte [ebp - 0x50]
mov byte [ebp - 0x1b], cl
movzx edx, byte [ebp - 0x18]
mov al, byte [ebp + edx - 0x19c]
mov byte [ebp - 0x19], al
movzx ecx, byte [ebp - 0x15]
movzx edx, byte [ebp + ecx - 0x19c]
mov dword [ebp - 0x1b4], edx
mov al, byte [ebp - 0x15]
add al, 1
mov byte [ebp - 0x15], al
movzx ecx, byte [ebp - 0x16]
add ecx, dword [ebp - 0x1b4]
mov byte [ebp - 0x16], cl
movzx edx, byte [ebp - 0x16]
movzx eax, byte [ebp - 0x18]
mov cl, byte [ebp + edx - 0x19c]
mov byte [ebp + eax - 0x19c], cl
movzx edx, byte [ebp - 0x17]
movzx eax, byte [ebp - 0x16]
mov cl, byte [ebp + edx - 0x19c]
mov byte [ebp + eax - 0x19c], cl
movzx edx, byte [ebp - 0x15]
movzx eax, byte [ebp - 0x17]
mov cl, byte [ebp + edx - 0x19c]
mov byte [ebp + eax - 0x19c], cl
movzx edx, byte [ebp - 0x15]
mov al, byte [ebp - 0x19]
mov byte [ebp + edx - 0x19c], al
movzx ecx, byte [ebp - 0x19]
movzx edx, byte [ebp + ecx - 0x19c]
movzx eax, byte [ebp - 0x1a]
add eax, edx
mov byte [ebp - 0x1a], al
movzx ecx, byte [ebp - 0x1b]
movzx edx, byte [ebp - 0x16]
movzx eax, byte [ebp + edx - 0x19c]
movzx edx, byte [ebp - 0x15]
movzx edx, byte [ebp + edx - 0x19c]
add eax, edx
and eax, 0xff
movzx eax, byte [ebp + eax - 0x19c]
xor ecx, eax
movzx edx, byte [ebp - 0x17]
movzx eax, byte [ebp + edx - 0x19c]
movzx edx, byte [ebp - 0x18]
movzx edx, byte [ebp + edx - 0x19c]
add eax, edx
movzx edx, byte [ebp - 0x1a]
movzx edx, byte [ebp + edx - 0x19c]
add eax, edx
and eax, 0xff
movzx eax, byte [ebp + eax - 0x19c]
movzx edx, byte [ebp + eax - 0x19c]
xor ecx, edx
mov byte [ebp - 0x17], cl
mov al, byte [ebp - 0x1b]
mov byte [ebp - 0x18], al
mov cl, byte [ebp - 0x17]
mov byte [ebp - 0x1c], cl
cmp dword [ebp - 0x24], 0
jle 0x4657f3
movsx dx, byte [ebp - 0x1c]
mov eax, dword [ebp - 0x24]
mov word [ebp + eax*2 - 0x202], dx
mov ecx, dword [ebp - 0x24]
add ecx, 1
mov dword [ebp - 0x24], ecx
mov edx, dword [ebp - 0x28]
add edx, 1
mov dword [ebp - 0x28], edx
mov eax, dword [ebp - 0x24]
shl eax, 1
mov dword [ebp - 0x54], eax
mov ecx, dword [ebp - 0x58]
add ecx, dword [ebp - 0x54]
movzx edx, byte [ecx]
mov dword [ebp - 0x3c], edx
mov dword [ebp - 0x40], 0x98
mov eax, dword [ebp - 0x24]
lea ecx, [eax + eax + 1]
mov dword [ebp - 0x5c], ecx
mov edx, dword [ebp - 0x58]
add edx, dword [ebp - 0x5c]
movzx eax, byte [edx]
mov dword [ebp - 0x44], eax
mov dword [ebp - 0x30], 0x6d
mov ecx, dword [ebp - 0x3c]
sub ecx, dword [ebp - 0x40]
mov dword [ebp - 0x34], ecx
mov edx, dword [ebp - 0x44]
sub edx, dword [ebp - 0x30]
mov dword [ebp - 0x38], edx
mov eax, dword [ebp - 0x34]
shl eax, 4
mov dword [ebp - 0x48], eax
mov ecx, dword [ebp - 0x38]
mov dword [ebp - 0x4c], ecx
mov edx, dword [ebp - 0x48]
or edx, dword [ebp - 0x4c]
mov dword [ebp - 0x50], edx
mov al, byte [ebp - 0x50]
mov byte [ebp - 0x1b], al
movzx ecx, byte [ebp - 0x18]
mov dl, byte [ebp + ecx - 0x19c]
mov byte [ebp - 0x19], dl
movzx eax, byte [ebp - 0x15]
movzx ecx, byte [ebp + eax - 0x19c]
mov dword [ebp - 0x1b8], ecx
mov dl, byte [ebp - 0x15]
add dl, 1
mov byte [ebp - 0x15], dl
movzx eax, byte [ebp - 0x16]
add eax, dword [ebp - 0x1b8]
mov byte [ebp - 0x16], al
movzx ecx, byte [ebp - 0x16]
movzx edx, byte [ebp - 0x18]
mov al, byte [ebp + ecx - 0x19c]
mov byte [ebp + edx - 0x19c], al
movzx ecx, byte [ebp - 0x17]
movzx edx, byte [ebp - 0x16]
mov al, byte [ebp + ecx - 0x19c]
mov byte [ebp + edx - 0x19c], al
movzx ecx, byte [ebp - 0x15]
movzx edx, byte [ebp - 0x17]
mov al, byte [ebp + ecx - 0x19c]
mov byte [ebp + edx - 0x19c], al
movzx ecx, byte [ebp - 0x15]
mov dl, byte [ebp - 0x19]
mov byte [ebp + ecx - 0x19c], dl
movzx eax, byte [ebp - 0x19]
movzx ecx, byte [ebp + eax - 0x19c]
movzx edx, byte [ebp - 0x1a]
add edx, ecx
mov byte [ebp - 0x1a], dl
movzx eax, byte [ebp - 0x1b]
movzx ecx, byte [ebp - 0x16]
movzx edx, byte [ebp + ecx - 0x19c]
movzx ecx, byte [ebp - 0x15]
movzx ecx, byte [ebp + ecx - 0x19c]
add edx, ecx
and edx, 0xff
movzx edx, byte [ebp + edx - 0x19c]
xor eax, edx
movzx ecx, byte [ebp - 0x17]
movzx edx, byte [ebp + ecx - 0x19c]
movzx ecx, byte [ebp - 0x18]
movzx ecx, byte [ebp + ecx - 0x19c]
add edx, ecx
movzx ecx, byte [ebp - 0x1a]
movzx ecx, byte [ebp + ecx - 0x19c]
add edx, ecx
and edx, 0xff
movzx edx, byte [ebp + edx - 0x19c]
movzx ecx, byte [ebp + edx - 0x19c]
xor eax, ecx
mov byte [ebp - 0x17], al
mov dl, byte [ebp - 0x1b]
mov byte [ebp - 0x18], dl
mov al, byte [ebp - 0x17]
mov byte [ebp - 0x1c], al
cmp dword [ebp - 0x24], 0
jle 0x46599b
movsx cx, byte [ebp - 0x1c]
mov edx, dword [ebp - 0x24]
mov word [ebp + edx*2 - 0x202], cx
mov eax, dword [ebp - 0x24]
add eax, 1
mov dword [ebp - 0x24], eax
mov ecx, dword [ebp - 0x28]
add ecx, 1
mov dword [ebp - 0x28], ecx
mov edx, dword [ebp - 0x24]
shl edx, 1
mov dword [ebp - 0x54], edx
mov eax, dword [ebp - 0x58]
add eax, dword [ebp - 0x54]
movzx ecx, byte [eax]
mov dword [ebp - 0x3c], ecx
mov dword [ebp - 0x40], 0x98
mov edx, dword [ebp - 0x24]
lea eax, [edx + edx + 1]
mov dword [ebp - 0x5c], eax
mov ecx, dword [ebp - 0x58]
add ecx, dword [ebp - 0x5c]
movzx edx, byte [ecx]
mov dword [ebp - 0x44], edx
mov dword [ebp - 0x30], 0x6d
mov eax, dword [ebp - 0x3c]
sub eax, dword [ebp - 0x40]
mov dword [ebp - 0x34], eax
mov ecx, dword [ebp - 0x44]
sub ecx, dword [ebp - 0x30]
mov dword [ebp - 0x38], ecx
mov edx, dword [ebp - 0x34]
shl edx, 4
mov dword [ebp - 0x48], edx
mov eax, dword [ebp - 0x38]
mov dword [ebp - 0x4c], eax
mov ecx, dword [ebp - 0x48]
or ecx, dword [ebp - 0x4c]
mov dword [ebp - 0x50], ecx
mov dl, byte [ebp - 0x50]
mov byte [ebp - 0x1b], dl
movzx eax, byte [ebp - 0x18]
mov cl, byte [ebp + eax - 0x19c]
mov byte [ebp - 0x19], cl
movzx edx, byte [ebp - 0x15]
movzx eax, byte [ebp + edx - 0x19c]
mov dword [ebp - 0x1c8], eax
mov cl, byte [ebp - 0x15]
add cl, 1
mov byte [ebp - 0x15], cl
movzx edx, byte [ebp - 0x16]
add edx, dword [ebp - 0x1c8]
mov byte [ebp - 0x16], dl
movzx eax, byte [ebp - 0x16]
movzx ecx, byte [ebp - 0x18]
mov dl, byte [ebp + eax - 0x19c]
mov byte [ebp + ecx - 0x19c], dl
movzx eax, byte [ebp - 0x17]
movzx ecx, byte [ebp - 0x16]
mov dl, byte [ebp + eax - 0x19c]
mov byte [ebp + ecx - 0x19c], dl
movzx eax, byte [ebp - 0x15]
movzx ecx, byte [ebp - 0x17]
mov dl, byte [ebp + eax - 0x19c]
mov byte [ebp + ecx - 0x19c], dl
movzx eax, byte [ebp - 0x15]
mov cl, byte [ebp - 0x19]
mov byte [ebp + eax - 0x19c], cl
movzx edx, byte [ebp - 0x19]
movzx eax, byte [ebp + edx - 0x19c]
movzx ecx, byte [ebp - 0x1a]
add ecx, eax
mov byte [ebp - 0x1a], cl
movzx edx, byte [ebp - 0x1b]
movzx eax, byte [ebp - 0x16]
movzx ecx, byte [ebp + eax - 0x19c]
movzx eax, byte [ebp - 0x15]
movzx eax, byte [ebp + eax - 0x19c]
add ecx, eax
and ecx, 0xff
movzx ecx, byte [ebp + ecx - 0x19c]
xor edx, ecx
movzx eax, byte [ebp - 0x17]
movzx ecx, byte [ebp + eax - 0x19c]
movzx eax, byte [ebp - 0x18]
movzx eax, byte [ebp + eax - 0x19c]
add ecx, eax
movzx eax, byte [ebp - 0x1a]
movzx eax, byte [ebp + eax - 0x19c]
add ecx, eax
and ecx, 0xff
movzx ecx, byte [ebp + ecx - 0x19c]
movzx eax, byte [ebp + ecx - 0x19c]
xor edx, eax
mov byte [ebp - 0x17], dl
mov cl, byte [ebp - 0x1b]
mov byte [ebp - 0x18], cl
mov dl, byte [ebp - 0x17]
mov byte [ebp - 0x1c], dl
cmp dword [ebp - 0x24], 0
jle 0x465b43
movsx ax, byte [ebp - 0x1c]
mov ecx, dword [ebp - 0x24]
mov word [ebp + ecx*2 - 0x202], ax
mov edx, dword [ebp - 0x24]
add edx, 1
mov dword [ebp - 0x24], edx
mov eax, dword [ebp - 0x28]
add eax, 1
mov dword [ebp - 0x28], eax
mov ecx, dword [ebp - 0x24]
shl ecx, 1
mov dword [ebp - 0x54], ecx
mov edx, dword [ebp - 0x58]
add edx, dword [ebp - 0x54]
movzx eax, byte [edx]
mov dword [ebp - 0x3c], eax
mov dword [ebp - 0x40], 0x98
mov ecx, dword [ebp - 0x24]
lea edx, [ecx + ecx + 1]
mov dword [ebp - 0x5c], edx
mov eax, dword [ebp - 0x58]
add eax, dword [ebp - 0x5c]
movzx ecx, byte [eax]
mov dword [ebp - 0x44], ecx
mov dword [ebp - 0x30], 0x6d
mov edx, dword [ebp - 0x3c]
sub edx, dword [ebp - 0x40]
mov dword [ebp - 0x34], edx
mov eax, dword [ebp - 0x44]
sub eax, dword [ebp - 0x30]
mov dword [ebp - 0x38], eax
mov ecx, dword [ebp - 0x34]
shl ecx, 4
mov dword [ebp - 0x48], ecx
mov edx, dword [ebp - 0x38]
mov dword [ebp - 0x4c], edx
mov eax, dword [ebp - 0x48]
or eax, dword [ebp - 0x4c]
mov dword [ebp - 0x50], eax
mov cl, byte [ebp - 0x50]
mov byte [ebp - 0x1b], cl
movzx edx, byte [ebp - 0x18]
mov al, byte [ebp + edx - 0x19c]
mov byte [ebp - 0x19], al
movzx ecx, byte [ebp - 0x15]
movzx edx, byte [ebp + ecx - 0x19c]
mov dword [ebp - 0x1c0], edx
mov al, byte [ebp - 0x15]
add al, 1
mov byte [ebp - 0x15], al
movzx ecx, byte [ebp - 0x16]
add ecx, dword [ebp - 0x1c0]
mov byte [ebp - 0x16], cl
movzx edx, byte [ebp - 0x16]
movzx eax, byte [ebp - 0x18]
mov cl, byte [ebp + edx - 0x19c]
mov byte [ebp + eax - 0x19c], cl
movzx edx, byte [ebp - 0x17]
movzx eax, byte [ebp - 0x16]
mov cl, byte [ebp + edx - 0x19c]
mov byte [ebp + eax - 0x19c], cl
movzx edx, byte [ebp - 0x15]
movzx eax, byte [ebp - 0x17]
mov cl, byte [ebp + edx - 0x19c]
mov byte [ebp + eax - 0x19c], cl
movzx edx, byte [ebp - 0x15]
mov al, byte [ebp - 0x19]
mov byte [ebp + edx - 0x19c], al
movzx ecx, byte [ebp - 0x19]
movzx edx, byte [ebp + ecx - 0x19c]
movzx eax, byte [ebp - 0x1a]
add eax, edx
mov byte [ebp - 0x1a], al
movzx ecx, byte [ebp - 0x1b]
movzx edx, byte [ebp - 0x16]
movzx eax, byte [ebp + edx - 0x19c]
movzx edx, byte [ebp - 0x15]
movzx edx, byte [ebp + edx - 0x19c]
add eax, edx
and eax, 0xff
movzx eax, byte [ebp + eax - 0x19c]
xor ecx, eax
movzx edx, byte [ebp - 0x17]
movzx eax, byte [ebp + edx - 0x19c]
movzx edx, byte [ebp - 0x18]
movzx edx, byte [ebp + edx - 0x19c]
add eax, edx
movzx edx, byte [ebp - 0x1a]
movzx edx, byte [ebp + edx - 0x19c]
add eax, edx
and eax, 0xff
movzx eax, byte [ebp + eax - 0x19c]
movzx edx, byte [ebp + eax - 0x19c]
xor ecx, edx
mov byte [ebp - 0x17], cl
mov al, byte [ebp - 0x1b]
mov byte [ebp - 0x18], al
mov cl, byte [ebp - 0x17]
mov byte [ebp - 0x1c], cl
cmp dword [ebp - 0x24], 0
jle 0x465ce8
movsx dx, byte [ebp - 0x1c]
mov eax, dword [ebp - 0x24]
mov word [ebp + eax*2 - 0x202], dx
mov ecx, 2
imul edx, ecx, 0x1a
mov dword [ebp - 0x98], edx
cmp dword [ebp - 0x98], 0x36
jae 0x465d01
jmp 0x465d06
call fcn.0053f597
xor eax, eax
mov ecx, dword [ebp - 0x98]
mov word [ebp + ecx - 0x200], ax
jmp 0x465d5d
mov dword [ebp - 0x80], 0
jmp 0x465d2a
mov edx, dword [ebp - 0x80]
add edx, 1
mov dword [ebp - 0x80], edx
cmp dword [ebp - 0x80], 0x1b
jge 0x465d5d
mov eax, dword [ebp - 0x80]
shl eax, 1
mov dword [ebp - 0x9c], eax
cmp dword [ebp - 0x9c], 0x36
jae 0x465d46
jmp 0x465d4b
call fcn.0053f597
xor ecx, ecx
mov edx, dword [ebp - 0x9c]
mov word [ebp + edx - 0x200], cx
jmp 0x465d21
mov eax, 2
imul ecx, eax, 0
mov edx, dword [ebp + 8]
mov eax, dword [ebp - 8]
mov ax, word [ebp + eax*2 - 0x200]
mov word [edx + ecx], ax
mov ecx, 2
imul edx, ecx, 3
xor eax, eax
mov ecx, dword [ebp + 8]
mov word [ecx + edx], ax
mov edx, 2
shl edx, 1
mov eax, dword [ebp + 8]
mov ecx, dword [ebp - 0x1c4]
mov cx, word [ebp + ecx*2 - 0x200]
mov word [eax + edx], cx
mov edx, 2
shl edx, 0
mov eax, dword [ebp + 8]
mov ecx, dword [ebp - 0xc]
mov cx, word [ebp + ecx*2 - 0x200]
mov word [eax + edx], cx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0053f016
mov esp, ebp
pop ebp
ret 4