Function at 0x4639be
Capabilities:
Encrypt data using speck

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1f8
mov eax, dword [0x5f7268]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
mov dword [ebp - 0x1c0], ecx
mov dword [ebp - 0x10], 0
mov dword [ebp - 0xc], 0
xorps xmm0, xmm0
movsd qword [ebp - 0x74], xmm0
xorps xmm0, xmm0
movsd qword [ebp - 0x6c], xmm0
xorps xmm0, xmm0
movsd qword [ebp - 0x6c], xmm0
jmp 0x463826
movsd xmm0, qword [ebp - 0x6c]
addsd xmm0, qword [0x5540f8]
movsd qword [ebp - 0x6c], xmm0
movsd xmm0, qword [0x554af8]
comisd xmm0, xmmword [ebp - 0x6c]
jbe 0x4638ac
movsd xmm0, qword [0x554a28]
mulsd xmm0, qword [ebp - 0x6c]
mulsd xmm0, qword [ebp - 0x6c]
movsd xmm1, qword [ebp - 0x6c]
mulsd xmm1, qword [ebp - 0x6c]
subsd xmm0, xmm1
movsd xmm1, qword [0x554848]
mulsd xmm1, qword [ebp - 0x6c]
mulsd xmm1, qword [ebp - 0x6c]
addsd xmm1, qword [0x554918]
divsd xmm0, xmm1
add dl, dh
divps xmm0, xmm1
sal edx, 0xf
pop eax
addsd xmm0, qword [ebp - 0x74]
movsd qword [ebp - 0x74], xmm0
movsd xmm0, qword [ebp - 0x74]
inc ebp
invalid
inc ebp
invalid
movups xmm0, xmmword [ebp - 0x74]
mov word [esi + 0xf], fs
das
comisd xmm0, xmmword [0x554968]
add eax, 0x554968
push ebp
add byte [esi + 0x1b], dh
jbe 0x4638a7
movsd xmm0, qword [0x5547c8]
adc byte [0x5547c8], al
push ebp
add dl, dh
mulsd xmm0, qword [ebp - 0x6c]
mulps xmm0, xmmword [ebp - 0x6c]
movsd xmm1, qword [ebp - 0x74]
subsd xmm1, xmm0
movsd qword [ebp - 0x74], xmm1
invalid
pop esp
enter 0xff2, 0x11
dec ebp
mov ecx, gs
push 0xfffffff
push edi
shl byte [esi + 0xf], 0x2f
inc ebp
invalid
jmp 0x463814
xorps xmm0, xmm0
comisd xmm0, xmmword [ebp - 0x74]
jbe 0x463907
and esp, dword [esi]
insb byte es:[edi], dx
pushal
pop ebx
xor byte [edi + 0x61], al
and al, 0x30
je 0x46390c
push ebp
xor eax, 0x30446253
sub eax, 0x9c212064
jl 0x46386e
jno 0x463876
jo 0x463873
jl 0x463872
jno 0x46387b
insd dword es:[edi], dx
cwde
je 0x46387e
jnp 0x463876
jo 0x463881
jae 0x463885
jb 0x463888
ja 0x463881
outsb dx, byte [esi]
mov eax, dword [0xa76fa372]
jne 0x463892
js 0x46388c
ja 0x46388e
insd dword es:[edi], dx
mov al, byte [0xa376a676]
jo 0x46389d
jns 0x463895
jb 0x4638a0
jl 0x4638a6
outsb dx, byte [esi]
cmpsd dword [esi], dword es:[edi]
insd dword es:[edi], dx
jmp 0x464a41
mov dword [ebp - 0x10], 0x4638cc
mov dword [ebp - 0xc], 0x4638b6
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x58], eax
mov ecx, dword [ebp - 0xc]
mov dword [ebp - 0x19c], ecx
mov byte [ebp - 0x59], 0x1a
mov dword [ebp - 0x28], 0
jmp 0x46393a
inc esi
add bh, al
inc ebp
hlt
mov edx, dword [ebp - 0x28]
add edx, 1
mov dword [ebp - 0x28], edx
cmp dword [ebp - 0x28], 0x100
jae 0x463952
mov eax, dword [ebp - 0x28]
mov cl, byte [ebp - 0x28]
mov byte [ebp + eax - 0x198], cl
jmp 0x463931
mov dword [ebp - 0x64], 0
mov byte [ebp - 0x19], 0
mov dword [ebp - 0x28], 0xff
jmp 0x46396f
mov edx, dword [ebp - 0x28]
sub edx, 1
mov dword [ebp - 0x28], edx
cmp dword [ebp - 0x28], 0
jbe 0x463b39
mov dword [ebp - 0x80], 0
mov dword [ebp - 0x78], 1
mov eax, dword [ebp - 0x78]
cmp eax, dword [ebp - 0x28]
jae 0x46399b
mov ecx, dword [ebp - 0x78]
lea edx, [ecx + ecx + 1]
mov dword [ebp - 0x78], edx
jmp 0x463987
mov eax, dword [ebp - 0x64]
mov dword [ebp - 0x8c], eax
cmp dword [ebp - 0x8c], 3
ja case.default.0x4639b7
mov ecx, dword [ebp - 0x8c]
jmp dword [ecx*4 + 0x464a78]
movzx edx, byte [ebp - 0x19]
movzx ebx, byte [ebp + edx - 0x198]
movsd xmm0, qword [ebp - 0x74]
call fcn.0053fc00
and eax, 0xff
add ebx, eax
mov byte [ebp - 0x19], bl
jmp 0x463a70
movzx eax, byte [ebp - 0x19]
movzx ebx, byte [ebp + eax - 0x198]
movsd xmm0, qword [ebp - 0x74]
call fcn.0053fc00
shr eax, 8
and eax, 0xff
add ebx, eax
mov byte [ebp - 0x19], bl
jmp 0x463a70
movzx ecx, byte [ebp - 0x19]
movzx ebx, byte [ebp + ecx - 0x198]
movsd xmm0, qword [ebp - 0x74]
call fcn.0053fc00
shr eax, 0x10
and eax, 0xff
add ebx, eax
mov byte [ebp - 0x19], bl
jmp 0x463a70
movzx edx, byte [ebp - 0x19]
movzx ebx, byte [ebp + edx - 0x198]
movsd xmm0, qword [ebp - 0x74]
call fcn.0053fc00
shr eax, 0x18
and eax, 0xff
add ebx, eax
mov byte [ebp - 0x19], bl
jmp 0x463a70
movzx eax, byte [ebp - 0x19]
movzx ecx, byte [ebp + eax - 0x198]
mov edx, dword [ebp - 0x19c]
add edx, dword [ebp - 0x64]
movzx eax, byte [edx - 4]
add ecx, eax
mov byte [ebp - 0x19], cl
mov ecx, dword [ebp - 0x64]
add ecx, 1
mov dword [ebp - 0x64], ecx
movzx edx, byte [ebp - 0x59]
cmp dword [ebp - 0x64], edx
jb 0x463a96
mov dword [ebp - 0x64], 0
movzx eax, byte [ebp - 0x59]
movzx ecx, byte [ebp - 0x19]
add ecx, eax
mov byte [ebp - 0x19], cl
movzx edx, byte [ebp - 0x19]
and edx, dword [ebp - 0x78]
mov dword [ebp - 0x60], edx
mov eax, dword [ebp - 0x80]
add eax, 1
mov dword [ebp - 0x80], eax
cmp dword [ebp - 0x80], 0xb
jbe 0x463aba
mov eax, dword [ebp - 0x60]
xor edx, edx
div dword [ebp - 0x28]
mov dword [ebp - 0x60], edx
mov ecx, dword [ebp - 0x60]
cmp ecx, dword [ebp - 0x28]
ja 0x46399b
mov edx, dword [ebp - 0x28]
cmp edx, dword [ebp - 0x60]
je 0x463b34
mov eax, dword [ebp - 0x60]
movzx ecx, byte [ebp + eax - 0x198]
mov edx, dword [ebp - 0x28]
movzx eax, byte [ebp + edx - 0x198]
xor eax, ecx
mov ecx, dword [ebp - 0x28]
mov byte [ebp + ecx - 0x198], al
mov edx, dword [ebp - 0x28]
movzx eax, byte [ebp + edx - 0x198]
mov ecx, dword [ebp - 0x60]
movzx edx, byte [ebp + ecx - 0x198]
xor edx, eax
mov eax, dword [ebp - 0x60]
mov byte [ebp + eax - 0x198], dl
mov ecx, dword [ebp - 0x60]
movzx edx, byte [ebp + ecx - 0x198]
mov eax, dword [ebp - 0x28]
movzx ecx, byte [ebp + eax - 0x198]
xor ecx, edx
mov edx, dword [ebp - 0x28]
mov byte [ebp + edx - 0x198], cl
jmp 0x463966
mov eax, 1
shl eax, 0
mov cl, byte [ebp + eax - 0x198]
mov byte [ebp - 0x11], cl
mov edx, 1
imul eax, edx, 3
mov cl, byte [ebp + eax - 0x198]
mov byte [ebp - 0x12], cl
mov edx, 1
imul eax, edx, 5
mov cl, byte [ebp + eax - 0x198]
mov byte [ebp - 0x16], cl
mov edx, 1
imul eax, edx, 7
mov cl, byte [ebp + eax - 0x198]
mov byte [ebp - 0x13], cl
movzx edx, byte [ebp - 0x19]
mov al, byte [ebp + edx - 0x198]
mov byte [ebp - 0x14], al
mov dword [ebp - 0x90], 0x36
cmp dword [ebp - 0x90], 2
jle 0x4649fc
mov ecx, dword [ebp - 0x90]
and ecx, 1
jne 0x4649fc
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x24], 0
mov edx, dword [ebp - 0x24]
add edx, 1
mov dword [ebp - 0x24], edx
mov dword [ebp - 0x44], 0
mov eax, dword [ebp - 0x20]
shl eax, 1
mov dword [ebp - 0x44], eax
mov dword [ebp - 0x2c], 0
mov ecx, dword [ebp - 0x58]
add ecx, dword [ebp - 0x44]
movzx edx, byte [ecx]
add edx, dword [ebp - 0x2c]
mov dword [ebp - 0x2c], edx
mov dword [ebp - 0x30], 0
mov eax, dword [ebp - 0x30]
add eax, 0x98
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x48], 0
mov ecx, dword [ebp - 0x20]
lea edx, [ecx + ecx + 1]
mov dword [ebp - 0x48], edx
mov dword [ebp - 0x34], 0
mov eax, dword [ebp - 0x58]
add eax, dword [ebp - 0x48]
movzx ecx, byte [eax]
add ecx, dword [ebp - 0x34]
mov dword [ebp - 0x34], ecx
mov dword [ebp - 0x38], 0
mov edx, dword [ebp - 0x38]
add edx, 0x6d
mov dword [ebp - 0x38], edx
mov dword [ebp - 0x3c], 0
mov eax, dword [ebp - 0x2c]
sub eax, dword [ebp - 0x30]
add eax, dword [ebp - 0x3c]
mov dword [ebp - 0x3c], eax
mov dword [ebp - 0x40], 0
mov ecx, dword [ebp - 0x34]
sub ecx, dword [ebp - 0x38]
add ecx, dword [ebp - 0x40]
mov dword [ebp - 0x40], ecx
mov dword [ebp - 0x4c], 0
mov edx, dword [ebp - 0x3c]
shl edx, 4
mov dword [ebp - 0x4c], edx
mov dword [ebp - 0x50], 0
mov eax, dword [ebp - 0x40]
mov dword [ebp - 0x50], eax
mov dword [ebp - 0x54], 0
mov ecx, dword [ebp - 0x4c]
or ecx, dword [ebp - 0x50]
mov dword [ebp - 0x54], ecx
mov byte [ebp - 0x17], 0
mov dl, byte [ebp - 0x54]
mov byte [ebp - 0x17], dl
mov byte [ebp - 0x15], 0
movzx eax, byte [ebp - 0x14]
mov cl, byte [ebp + eax - 0x198]
mov byte [ebp - 0x15], cl
movzx edx, byte [ebp - 0x11]
movzx eax, byte [ebp + edx - 0x198]
mov dword [ebp - 0x1b4], eax
mov cl, byte [ebp - 0x11]
add cl, 1
mov byte [ebp - 0x11], cl
movzx edx, byte [ebp - 0x12]
add edx, dword [ebp - 0x1b4]
mov byte [ebp - 0x12], dl
movzx eax, byte [ebp - 0x12]
movzx ecx, byte [ebp - 0x14]
mov dl, byte [ebp + eax - 0x198]
mov byte [ebp + ecx - 0x198], dl
movzx eax, byte [ebp - 0x13]
movzx ecx, byte [ebp - 0x12]
mov dl, byte [ebp + eax - 0x198]
mov byte [ebp + ecx - 0x198], dl
movzx eax, byte [ebp - 0x11]
movzx ecx, byte [ebp - 0x13]
mov dl, byte [ebp + eax - 0x198]
mov byte [ebp + ecx - 0x198], dl
movzx eax, byte [ebp - 0x11]
mov cl, byte [ebp - 0x15]
mov byte [ebp + eax - 0x198], cl
movzx edx, byte [ebp - 0x15]
movzx eax, byte [ebp + edx - 0x198]
movzx ecx, byte [ebp - 0x16]
add ecx, eax
mov byte [ebp - 0x16], cl
movzx edx, byte [ebp - 0x17]
movzx eax, byte [ebp - 0x12]
movzx ecx, byte [ebp + eax - 0x198]
movzx eax, byte [ebp - 0x11]
movzx eax, byte [ebp + eax - 0x198]
add ecx, eax
and ecx, 0xff
movzx ecx, byte [ebp + ecx - 0x198]
xor edx, ecx
movzx eax, byte [ebp - 0x13]
movzx ecx, byte [ebp + eax - 0x198]
movzx eax, byte [ebp - 0x14]
movzx eax, byte [ebp + eax - 0x198]
add ecx, eax
movzx eax, byte [ebp - 0x16]
movzx eax, byte [ebp + eax - 0x198]
add ecx, eax
and ecx, 0xff
movzx ecx, byte [ebp + ecx - 0x198]
movzx eax, byte [ebp + ecx - 0x198]
xor edx, eax
mov byte [ebp - 0x13], dl
mov cl, byte [ebp - 0x17]
mov byte [ebp - 0x14], cl
mov dl, byte [ebp - 0x13]
mov byte [ebp - 0x18], dl
cmp dword [ebp - 0x20], 0
jle 0x463dc9
movsx ax, byte [ebp - 0x18]
mov ecx, dword [ebp - 0x20]
mov word [ebp + ecx*2 - 0x1fa], ax
mov edx, dword [ebp - 0x24]
add edx, 0xa
mov dword [ebp - 0x24], edx
mov eax, dword [ebp - 0x20]
add eax, 1
mov dword [ebp - 0x84], eax
jmp 0x463def
mov ecx, dword [ebp - 0x84]
add ecx, 1
mov dword [ebp - 0x84], ecx
mov edx, dword [ebp - 0x84]
cmp edx, dword [ebp - 0x24]
jge 0x463f9f
mov eax, dword [ebp - 0x20]
add eax, 1
mov dword [ebp - 0x20], eax
mov ecx, dword [ebp - 0x20]
shl ecx, 1
mov dword [ebp - 0x44], ecx
mov edx, dword [ebp - 0x58]
add edx, dword [ebp - 0x44]
movzx eax, byte [edx]
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x30], 0x98
mov ecx, dword [ebp - 0x20]
lea edx, [ecx + ecx + 1]
mov dword [ebp - 0x48], edx
mov eax, dword [ebp - 0x58]
add eax, dword [ebp - 0x48]
movzx ecx, byte [eax]
mov dword [ebp - 0x34], ecx
mov dword [ebp - 0x38], 0x6d
mov edx, dword [ebp - 0x2c]
sub edx, dword [ebp - 0x30]
mov dword [ebp - 0x3c], edx
mov eax, dword [ebp - 0x34]
sub eax, dword [ebp - 0x38]
mov dword [ebp - 0x40], eax
mov ecx, dword [ebp - 0x3c]
shl ecx, 4
mov dword [ebp - 0x4c], ecx
mov edx, dword [ebp - 0x40]
mov dword [ebp - 0x50], edx
mov eax, dword [ebp - 0x4c]
or eax, dword [ebp - 0x50]
mov dword [ebp - 0x54], eax
mov cl, byte [ebp - 0x54]
mov byte [ebp - 0x17], cl
movzx edx, byte [ebp - 0x14]
mov al, byte [ebp + edx - 0x198]
mov byte [ebp - 0x15], al
movzx ecx, byte [ebp - 0x11]
movzx edx, byte [ebp + ecx - 0x198]
mov dword [ebp - 0x1a0], edx
mov al, byte [ebp - 0x11]
add al, 1
mov byte [ebp - 0x11], al
movzx ecx, byte [ebp - 0x12]
add ecx, dword [ebp - 0x1a0]
mov byte [ebp - 0x12], cl
movzx edx, byte [ebp - 0x12]
movzx eax, byte [ebp - 0x14]
mov cl, byte [ebp + edx - 0x198]
mov byte [ebp + eax - 0x198], cl
movzx edx, byte [ebp - 0x13]
movzx eax, byte [ebp - 0x12]
mov cl, byte [ebp + edx - 0x198]
mov byte [ebp + eax - 0x198], cl
movzx edx, byte [ebp - 0x11]
movzx eax, byte [ebp - 0x13]
mov cl, byte [ebp + edx - 0x198]
mov byte [ebp + eax - 0x198], cl
movzx edx, byte [ebp - 0x11]
mov al, byte [ebp - 0x15]
mov byte [ebp + edx - 0x198], al
movzx ecx, byte [ebp - 0x15]
movzx edx, byte [ebp + ecx - 0x198]
movzx eax, byte [ebp - 0x16]
add eax, edx
mov byte [ebp - 0x16], al
movzx ecx, byte [ebp - 0x17]
movzx edx, byte [ebp - 0x12]
movzx eax, byte [ebp + edx - 0x198]
movzx edx, byte [ebp - 0x11]
movzx edx, byte [ebp + edx - 0x198]
add eax, edx
and eax, 0xff
movzx eax, byte [ebp + eax - 0x198]
xor ecx, eax
movzx edx, byte [ebp - 0x13]
movzx eax, byte [ebp + edx - 0x198]
movzx edx, byte [ebp - 0x14]
movzx edx, byte [ebp + edx - 0x198]
add eax, edx
movzx edx, byte [ebp - 0x16]
movzx edx, byte [ebp + edx - 0x198]
add eax, edx
and eax, 0xff
movzx eax, byte [ebp + eax - 0x198]
movzx edx, byte [ebp + eax - 0x198]
xor ecx, edx
mov byte [ebp - 0x13], cl
mov al, byte [ebp - 0x17]
mov byte [ebp - 0x14], al
mov cl, byte [ebp - 0x13]
mov byte [ebp - 0x18], cl
cmp dword [ebp - 0x20], 0
jle 0x463f9a
movsx dx, byte [ebp - 0x18]
mov eax, dword [ebp - 0x20]
mov word [ebp + eax*2 - 0x1fa], dx
jmp 0x463de0
mov ecx, dword [ebp - 0x24]
add ecx, 1
mov dword [ebp - 0x24], ecx
mov edx, dword [ebp - 0x20]
add edx, 1
mov dword [ebp - 0x20], edx
mov eax, dword [ebp - 0x24]
add eax, 1
mov dword [ebp - 0x24], eax
mov ecx, dword [ebp - 0x20]
shl ecx, 1
mov dword [ebp - 0x44], ecx
mov edx, dword [ebp - 0x58]
add edx, dword [ebp - 0x44]
movzx eax, byte [edx]
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x30], 0x98
mov ecx, dword [ebp - 0x20]
lea edx, [ecx + ecx + 1]
mov dword [ebp - 0x48], edx
mov eax, dword [ebp - 0x58]
add eax, dword [ebp - 0x48]
movzx ecx, byte [eax]
mov dword [ebp - 0x34], ecx
mov dword [ebp - 0x38], 0x6d
mov edx, dword [ebp - 0x2c]
sub edx, dword [ebp - 0x30]
mov dword [ebp - 0x3c], edx
mov eax, dword [ebp - 0x34]
sub eax, dword [ebp - 0x38]
mov dword [ebp - 0x40], eax
mov ecx, dword [ebp - 0x3c]
shl ecx, 4
mov dword [ebp - 0x4c], ecx
mov edx, dword [ebp - 0x40]
mov dword [ebp - 0x50], edx
mov eax, dword [ebp - 0x4c]
or eax, dword [ebp - 0x50]
mov dword [ebp - 0x54], eax
mov cl, byte [ebp - 0x54]
mov byte [ebp - 0x17], cl
movzx edx, byte [ebp - 0x14]
mov al, byte [ebp + edx - 0x198]
mov byte [ebp - 0x15], al
movzx ecx, byte [ebp - 0x11]
movzx edx, byte [ebp + ecx - 0x198]
mov dword [ebp - 0x1a4], edx
mov al, byte [ebp - 0x11]
add al, 1
mov byte [ebp - 0x11], al
movzx ecx, byte [ebp - 0x12]
add ecx, dword [ebp - 0x1a4]
mov byte [ebp - 0x12], cl
movzx edx, byte [ebp - 0x12]
movzx eax, byte [ebp - 0x14]
mov cl, byte [ebp + edx - 0x198]
mov byte [ebp + eax - 0x198], cl
movzx edx, byte [ebp - 0x13]
movzx eax, byte [ebp - 0x12]
mov cl, byte [ebp + edx - 0x198]
mov byte [ebp + eax - 0x198], cl
movzx edx, byte [ebp - 0x11]
movzx eax, byte [ebp - 0x13]
mov cl, byte [ebp + edx - 0x198]
mov byte [ebp + eax - 0x198], cl
movzx edx, byte [ebp - 0x11]
mov al, byte [ebp - 0x15]
mov byte [ebp + edx - 0x198], al
movzx ecx, byte [ebp - 0x15]
movzx edx, byte [ebp + ecx - 0x198]
movzx eax, byte [ebp - 0x16]
add eax, edx
mov byte [ebp - 0x16], al
movzx ecx, byte [ebp - 0x17]
movzx edx, byte [ebp - 0x12]
movzx eax, byte [ebp + edx - 0x198]
movzx edx, byte [ebp - 0x11]
movzx edx, byte [ebp + edx - 0x198]
add eax, edx
and eax, 0xff
movzx eax, byte [ebp + eax - 0x198]
xor ecx, eax
movzx edx, byte [ebp - 0x13]
movzx eax, byte [ebp + edx - 0x198]
movzx edx, byte [ebp - 0x14]
movzx edx, byte [ebp + edx - 0x198]
add eax, edx
movzx edx, byte [ebp - 0x16]
movzx edx, byte [ebp + edx - 0x198]
add eax, edx
and eax, 0xff
movzx eax, byte [ebp + eax - 0x198]
movzx edx, byte [ebp + eax - 0x198]
xor ecx, edx
mov byte [ebp - 0x13], cl
mov al, byte [ebp - 0x17]
mov byte [ebp - 0x14], al
mov cl, byte [ebp - 0x13]
mov byte [ebp - 0x18], cl
cmp dword [ebp - 0x20], 0
jle 0x46414d
movsx dx, byte [ebp - 0x18]
mov eax, dword [ebp - 0x20]
mov word [ebp + eax*2 - 0x1fa], dx
mov ecx, dword [ebp - 0x24]
add ecx, 0xb
mov dword [ebp - 0x24], ecx
mov edx, dword [ebp - 0x20]
add edx, 1
mov dword [ebp - 0x88], edx
jmp 0x464173
mov eax, dword [ebp - 0x88]
add eax, 1
mov dword [ebp - 0x88], eax
mov ecx, dword [ebp - 0x88]
cmp ecx, dword [ebp - 0x24]
jge 0x464326
mov edx, dword [ebp - 0x20]
add edx, 1
mov dword [ebp - 0x20], edx
mov eax, dword [ebp - 0x20]
shl eax, 1
mov dword [ebp - 0x44], eax
mov ecx, dword [ebp - 0x58]
add ecx, dword [ebp - 0x44]
movzx edx, byte [ecx]
mov dword [ebp - 0x2c], edx
mov dword [ebp - 0x30], 0x98
mov eax, dword [ebp - 0x20]
lea ecx, [eax + eax + 1]
mov dword [ebp - 0x48], ecx
mov edx, dword [ebp - 0x58]
add edx, dword [ebp - 0x48]
movzx eax, byte [edx]
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x38], 0x6d
mov ecx, dword [ebp - 0x2c]
sub ecx, dword [ebp - 0x30]
mov dword [ebp - 0x3c], ecx
mov edx, dword [ebp - 0x34]
sub edx, dword [ebp - 0x38]
mov dword [ebp - 0x40], edx
mov eax, dword [ebp - 0x3c]
shl eax, 4
mov dword [ebp - 0x4c], eax
mov ecx, dword [ebp - 0x40]
mov dword [ebp - 0x50], ecx
mov edx, dword [ebp - 0x4c]
or edx, dword [ebp - 0x50]
mov dword [ebp - 0x54], edx
mov al, byte [ebp - 0x54]
mov byte [ebp - 0x17], al
movzx ecx, byte [ebp - 0x14]
mov dl, byte [ebp + ecx - 0x198]
mov byte [ebp - 0x15], dl
movzx eax, byte [ebp - 0x11]
movzx ecx, byte [ebp + eax - 0x198]
mov dword [ebp - 0x1a8], ecx
mov dl, byte [ebp - 0x11]
add dl, 1
mov byte [ebp - 0x11], dl
movzx eax, byte [ebp - 0x12]
add eax, dword [ebp - 0x1a8]
mov byte [ebp - 0x12], al
movzx ecx, byte [ebp - 0x12]
movzx edx, byte [ebp - 0x14]
mov al, byte [ebp + ecx - 0x198]
mov byte [ebp + edx - 0x198], al
movzx ecx, byte [ebp - 0x13]
movzx edx, byte [ebp - 0x12]
mov al, byte [ebp + ecx - 0x198]
mov byte [ebp + edx - 0x198], al
movzx ecx, byte [ebp - 0x11]
movzx edx, byte [ebp - 0x13]
mov al, byte [ebp + ecx - 0x198]
mov byte [ebp + edx - 0x198], al
movzx ecx, byte [ebp - 0x11]
mov dl, byte [ebp - 0x15]
mov byte [ebp + ecx - 0x198], dl
movzx eax, byte [ebp - 0x15]
movzx ecx, byte [ebp + eax - 0x198]
movzx edx, byte [ebp - 0x16]
add edx, ecx
mov byte [ebp - 0x16], dl
movzx eax, byte [ebp - 0x17]
movzx ecx, byte [ebp - 0x12]
movzx edx, byte [ebp + ecx - 0x198]
movzx ecx, byte [ebp - 0x11]
movzx ecx, byte [ebp + ecx - 0x198]
add edx, ecx
and edx, 0xff
movzx edx, byte [ebp + edx - 0x198]
xor eax, edx
movzx ecx, byte [ebp - 0x13]
movzx edx, byte [ebp + ecx - 0x198]
movzx ecx, byte [ebp - 0x14]
movzx ecx, byte [ebp + ecx - 0x198]
add edx, ecx
movzx ecx, byte [ebp - 0x16]
movzx ecx, byte [ebp + ecx - 0x198]
add edx, ecx
and edx, 0xff
movzx edx, byte [ebp + edx - 0x198]
movzx ecx, byte [ebp + edx - 0x198]
xor eax, ecx
mov byte [ebp - 0x13], al
mov dl, byte [ebp - 0x17]
mov byte [ebp - 0x14], dl
mov al, byte [ebp - 0x13]
mov byte [ebp - 0x18], al
cmp dword [ebp - 0x20], 0
jle 0x464321
movsx cx, byte [ebp - 0x18]
mov edx, dword [ebp - 0x20]
mov word [ebp + edx*2 - 0x1fa], cx
jmp 0x464164
mov eax, dword [ebp - 0x24]
add eax, 1
mov dword [ebp - 0x24], eax
mov ecx, dword [ebp - 0x20]
add ecx, 1
mov dword [ebp - 0x20], ecx
mov edx, dword [ebp - 0x24]
add edx, 1
mov dword [ebp - 0x24], edx
mov eax, dword [ebp - 0x20]
shl eax, 1
mov dword [ebp - 0x44], eax
mov ecx, dword [ebp - 0x58]
add ecx, dword [ebp - 0x44]
movzx edx, byte [ecx]
mov dword [ebp - 0x2c], edx
mov dword [ebp - 0x30], 0x98
mov eax, dword [ebp - 0x20]
lea ecx, [eax + eax + 1]
mov dword [ebp - 0x48], ecx
mov edx, dword [ebp - 0x58]
add edx, dword [ebp - 0x48]
movzx eax, byte [edx]
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x38], 0x6d
mov ecx, dword [ebp - 0x2c]
sub ecx, dword [ebp - 0x30]
mov dword [ebp - 0x3c], ecx
mov edx, dword [ebp - 0x34]
sub edx, dword [ebp - 0x38]
mov dword [ebp - 0x40], edx
mov eax, dword [ebp - 0x3c]
shl eax, 4
mov dword [ebp - 0x4c], eax
mov ecx, dword [ebp - 0x40]
mov dword [ebp - 0x50], ecx
mov edx, dword [ebp - 0x4c]
or edx, dword [ebp - 0x50]
mov dword [ebp - 0x54], edx
mov al, byte [ebp - 0x54]
mov byte [ebp - 0x17], al
movzx ecx, byte [ebp - 0x14]
mov dl, byte [ebp + ecx - 0x198]
mov byte [ebp - 0x15], dl
movzx eax, byte [ebp - 0x11]
movzx ecx, byte [ebp + eax - 0x198]
mov dword [ebp - 0x1ac], ecx
mov dl, byte [ebp - 0x11]
add dl, 1
mov byte [ebp - 0x11], dl
movzx eax, byte [ebp - 0x12]
add eax, dword [ebp - 0x1ac]
mov byte [ebp - 0x12], al
movzx ecx, byte [ebp - 0x12]
movzx edx, byte [ebp - 0x14]
mov al, byte [ebp + ecx - 0x198]
mov byte [ebp + edx - 0x198], al
movzx ecx, byte [ebp - 0x13]
movzx edx, byte [ebp - 0x12]
mov al, byte [ebp + ecx - 0x198]
mov byte [ebp + edx - 0x198], al
movzx ecx, byte [ebp - 0x11]
movzx edx, byte [ebp - 0x13]
mov al, byte [ebp + ecx - 0x198]
mov byte [ebp + edx - 0x198], al
movzx ecx, byte [ebp - 0x11]
mov dl, byte [ebp - 0x15]
mov byte [ebp + ecx - 0x198], dl
movzx eax, byte [ebp - 0x15]
movzx ecx, byte [ebp + eax - 0x198]
movzx edx, byte [ebp - 0x16]
add edx, ecx
mov byte [ebp - 0x16], dl
movzx eax, byte [ebp - 0x17]
movzx ecx, byte [ebp - 0x12]
movzx edx, byte [ebp + ecx - 0x198]
movzx ecx, byte [ebp - 0x11]
movzx ecx, byte [ebp + ecx - 0x198]
add edx, ecx
and edx, 0xff
movzx edx, byte [ebp + edx - 0x198]
xor eax, edx
movzx ecx, byte [ebp - 0x13]
movzx edx, byte [ebp + ecx - 0x198]
movzx ecx, byte [ebp - 0x14]
movzx ecx, byte [ebp + ecx - 0x198]
add edx, ecx
movzx ecx, byte [ebp - 0x16]
movzx ecx, byte [ebp + ecx - 0x198]
add edx, ecx
and edx, 0xff
movzx edx, byte [ebp + edx - 0x198]
movzx ecx, byte [ebp + edx - 0x198]
xor eax, ecx
mov byte [ebp - 0x13], al
mov dl, byte [ebp - 0x17]
mov byte [ebp - 0x14], dl
mov al, byte [ebp - 0x13]
mov byte [ebp - 0x18], al
cmp dword [ebp - 0x20], 0
jle 0x4644d7
movsx cx, byte [ebp - 0x18]
mov edx, dword [ebp - 0x20]
mov word [ebp + edx*2 - 0x1fa], cx
mov eax, dword [ebp - 0x20]
add eax, 1
mov dword [ebp - 0x20], eax
mov ecx, dword [ebp - 0x24]
add ecx, 1
mov dword [ebp - 0x24], ecx
mov edx, dword [ebp - 0x20]
shl edx, 1
mov dword [ebp - 0x44], edx
mov eax, dword [ebp - 0x58]
add eax, dword [ebp - 0x44]
movzx ecx, byte [eax]
mov dword [ebp - 0x2c], ecx
mov dword [ebp - 0x30], 0x98
mov edx, dword [ebp - 0x20]
lea eax, [edx + edx + 1]
mov dword [ebp - 0x48], eax
mov ecx, dword [ebp - 0x58]
add ecx, dword [ebp - 0x48]
movzx edx, byte [ecx]
mov dword [ebp - 0x34], edx
mov dword [ebp - 0x38], 0x6d
mov eax, dword [ebp - 0x2c]
sub eax, dword [ebp - 0x30]
mov dword [ebp - 0x3c], eax
mov ecx, dword [ebp - 0x34]
sub ecx, dword [ebp - 0x38]
mov dword [ebp - 0x40], ecx
mov edx, dword [ebp - 0x3c]
shl edx, 4
mov dword [ebp - 0x4c], edx
mov eax, dword [ebp - 0x40]
mov dword [ebp - 0x50], eax
mov ecx, dword [ebp - 0x4c]
or ecx, dword [ebp - 0x50]
mov dword [ebp - 0x54], ecx
mov dl, byte [ebp - 0x54]
mov byte [ebp - 0x17], dl
movzx eax, byte [ebp - 0x14]
mov cl, byte [ebp + eax - 0x198]
mov byte [ebp - 0x15], cl
movzx edx, byte [ebp - 0x11]
movzx eax, byte [ebp + edx - 0x198]
mov dword [ebp - 0x1b0], eax
mov cl, byte [ebp - 0x11]
add cl, 1
mov byte [ebp - 0x11], cl
movzx edx, byte [ebp - 0x12]
add edx, dword [ebp - 0x1b0]
mov byte [ebp - 0x12], dl
movzx eax, byte [ebp - 0x12]
movzx ecx, byte [ebp - 0x14]
mov dl, byte [ebp + eax - 0x198]
mov byte [ebp + ecx - 0x198], dl
movzx eax, byte [ebp - 0x13]
movzx ecx, byte [ebp - 0x12]
mov dl, byte [ebp + eax - 0x198]
mov byte [ebp + ecx - 0x198], dl
movzx eax, byte [ebp - 0x11]
movzx ecx, byte [ebp - 0x13]
mov dl, byte [ebp + eax - 0x198]
mov byte [ebp + ecx - 0x198], dl
movzx eax, byte [ebp - 0x11]
mov cl, byte [ebp - 0x15]
mov byte [ebp + eax - 0x198], cl
movzx edx, byte [ebp - 0x15]
movzx eax, byte [ebp + edx - 0x198]
movzx ecx, byte [ebp - 0x16]
add ecx, eax
mov byte [ebp - 0x16], cl
movzx edx, byte [ebp - 0x17]
movzx eax, byte [ebp - 0x12]
movzx ecx, byte [ebp + eax - 0x198]
movzx eax, byte [ebp - 0x11]
movzx eax, byte [ebp + eax - 0x198]
add ecx, eax
and ecx, 0xff
movzx ecx, byte [ebp + ecx - 0x198]
xor edx, ecx
movzx eax, byte [ebp - 0x13]
movzx ecx, byte [ebp + eax - 0x198]
movzx eax, byte [ebp - 0x14]
movzx eax, byte [ebp + eax - 0x198]
add ecx, eax
movzx eax, byte [ebp - 0x16]
movzx eax, byte [ebp + eax - 0x198]
add ecx, eax
and ecx, 0xff
movzx ecx, byte [ebp + ecx - 0x198]
movzx eax, byte [ebp + ecx - 0x198]
xor edx, eax
mov byte [ebp - 0x13], dl
mov cl, byte [ebp - 0x17]
mov byte [ebp - 0x14], cl
mov dl, byte [ebp - 0x13]
mov byte [ebp - 0x18], dl
cmp dword [ebp - 0x20], 0
jle 0x46467f
movsx ax, byte [ebp - 0x18]
mov ecx, dword [ebp - 0x20]
mov word [ebp + ecx*2 - 0x1fa], ax
mov edx, dword [ebp - 0x20]
add edx, 1
mov dword [ebp - 0x20], edx
mov eax, dword [ebp - 0x24]
add eax, 1
mov dword [ebp - 0x24], eax
mov ecx, dword [ebp - 0x20]
shl ecx, 1
mov dword [ebp - 0x44], ecx
mov edx, dword [ebp - 0x58]
add edx, dword [ebp - 0x44]
movzx eax, byte [edx]
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x30], 0x98
mov ecx, dword [ebp - 0x20]
lea edx, [ecx + ecx + 1]
mov dword [ebp - 0x48], edx
mov eax, dword [ebp - 0x58]
add eax, dword [ebp - 0x48]
movzx ecx, byte [eax]
mov dword [ebp - 0x34], ecx
mov dword [ebp - 0x38], 0x6d
mov edx, dword [ebp - 0x2c]
sub edx, dword [ebp - 0x30]
mov dword [ebp - 0x3c], edx
mov eax, dword [ebp - 0x34]
sub eax, dword [ebp - 0x38]
mov dword [ebp - 0x40], eax
mov ecx, dword [ebp - 0x3c]
shl ecx, 4
mov dword [ebp - 0x4c], ecx
mov edx, dword [ebp - 0x40]
mov dword [ebp - 0x50], edx
mov eax, dword [ebp - 0x4c]
or eax, dword [ebp - 0x50]
mov dword [ebp - 0x54], eax
mov cl, byte [ebp - 0x54]
mov byte [ebp - 0x17], cl
movzx edx, byte [ebp - 0x14]
mov al, byte [ebp + edx - 0x198]
mov byte [ebp - 0x15], al
movzx ecx, byte [ebp - 0x11]
movzx edx, byte [ebp + ecx - 0x198]
mov dword [ebp - 0x1bc], edx
mov al, byte [ebp - 0x11]
add al, 1
mov byte [ebp - 0x11], al
movzx ecx, byte [ebp - 0x12]
add ecx, dword [ebp - 0x1bc]
mov byte [ebp - 0x12], cl
movzx edx, byte [ebp - 0x12]
movzx eax, byte [ebp - 0x14]
mov cl, byte [ebp + edx - 0x198]
mov byte [ebp + eax - 0x198], cl
movzx edx, byte [ebp - 0x13]
movzx eax, byte [ebp - 0x12]
mov cl, byte [ebp + edx - 0x198]
mov byte [ebp + eax - 0x198], cl
movzx edx, byte [ebp - 0x11]
movzx eax, byte [ebp - 0x13]
mov cl, byte [ebp + edx - 0x198]
mov byte [ebp + eax - 0x198], cl
movzx edx, byte [ebp - 0x11]
mov al, byte [ebp - 0x15]
mov byte [ebp + edx - 0x198], al
movzx ecx, byte [ebp - 0x15]
movzx edx, byte [ebp + ecx - 0x198]
movzx eax, byte [ebp - 0x16]
add eax, edx
mov byte [ebp - 0x16], al
movzx ecx, byte [ebp - 0x17]
movzx edx, byte [ebp - 0x12]
movzx eax, byte [ebp + edx - 0x198]
movzx edx, byte [ebp - 0x11]
movzx edx, byte [ebp + edx - 0x198]
add eax, edx
and eax, 0xff
movzx eax, byte [ebp + eax - 0x198]
xor ecx, eax
movzx edx, byte [ebp - 0x13]
movzx eax, byte [ebp + edx - 0x198]
movzx edx, byte [ebp - 0x14]
movzx edx, byte [ebp + edx - 0x198]
add eax, edx
movzx edx, byte [ebp - 0x16]
movzx edx, byte [ebp + edx - 0x198]
add eax, edx
and eax, 0xff
movzx eax, byte [ebp + eax - 0x198]
movzx edx, byte [ebp + eax - 0x198]
xor ecx, edx
mov byte [ebp - 0x13], cl
mov al, byte [ebp - 0x17]
mov byte [ebp - 0x14], al
mov cl, byte [ebp - 0x13]
mov byte [ebp - 0x18], cl
cmp dword [ebp - 0x20], 0
jle 0x464824
movsx dx, byte [ebp - 0x18]
mov eax, dword [ebp - 0x20]
mov word [ebp + eax*2 - 0x1fa], dx
mov ecx, dword [ebp - 0x20]
add ecx, 1
mov dword [ebp - 0x20], ecx
mov edx, dword [ebp - 0x24]
add edx, 1
mov dword [ebp - 0x24], edx
mov eax, dword [ebp - 0x20]
shl eax, 1
mov dword [ebp - 0x44], eax
mov ecx, dword [ebp - 0x58]
add ecx, dword [ebp - 0x44]
movzx edx, byte [ecx]
mov dword [ebp - 0x2c], edx
mov dword [ebp - 0x30], 0x98
mov eax, dword [ebp - 0x20]
lea ecx, [eax + eax + 1]
mov dword [ebp - 0x48], ecx
mov edx, dword [ebp - 0x58]
add edx, dword [ebp - 0x48]
movzx eax, byte [edx]
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x38], 0x6d
mov ecx, dword [ebp - 0x2c]
sub ecx, dword [ebp - 0x30]
mov dword [ebp - 0x3c], ecx
mov edx, dword [ebp - 0x34]
sub edx, dword [ebp - 0x38]
mov dword [ebp - 0x40], edx
mov eax, dword [ebp - 0x3c]
shl eax, 4
mov dword [ebp - 0x4c], eax
mov ecx, dword [ebp - 0x40]
mov dword [ebp - 0x50], ecx
mov edx, dword [ebp - 0x4c]
or edx, dword [ebp - 0x50]
mov dword [ebp - 0x54], edx
mov al, byte [ebp - 0x54]
mov byte [ebp - 0x17], al
movzx ecx, byte [ebp - 0x14]
mov dl, byte [ebp + ecx - 0x198]
mov byte [ebp - 0x15], dl
movzx eax, byte [ebp - 0x11]
movzx ecx, byte [ebp + eax - 0x198]
mov dword [ebp - 0x1b8], ecx
mov dl, byte [ebp - 0x11]
add dl, 1
mov byte [ebp - 0x11], dl
movzx eax, byte [ebp - 0x12]
add eax, dword [ebp - 0x1b8]
mov byte [ebp - 0x12], al
movzx ecx, byte [ebp - 0x12]
movzx edx, byte [ebp - 0x14]
mov al, byte [ebp + ecx - 0x198]
mov byte [ebp + edx - 0x198], al
movzx ecx, byte [ebp - 0x13]
movzx edx, byte [ebp - 0x12]
mov al, byte [ebp + ecx - 0x198]
mov byte [ebp + edx - 0x198], al
movzx ecx, byte [ebp - 0x11]
movzx edx, byte [ebp - 0x13]
mov al, byte [ebp + ecx - 0x198]
mov byte [ebp + edx - 0x198], al
movzx ecx, byte [ebp - 0x11]
mov dl, byte [ebp - 0x15]
mov byte [ebp + ecx - 0x198], dl
movzx eax, byte [ebp - 0x15]
movzx ecx, byte [ebp + eax - 0x198]
movzx edx, byte [ebp - 0x16]
add edx, ecx
mov byte [ebp - 0x16], dl
movzx eax, byte [ebp - 0x17]
movzx ecx, byte [ebp - 0x12]
movzx edx, byte [ebp + ecx - 0x198]
movzx ecx, byte [ebp - 0x11]
movzx ecx, byte [ebp + ecx - 0x198]
add edx, ecx
and edx, 0xff
movzx edx, byte [ebp + edx - 0x198]
xor eax, edx
movzx ecx, byte [ebp - 0x13]
movzx edx, byte [ebp + ecx - 0x198]
movzx ecx, byte [ebp - 0x14]
movzx ecx, byte [ebp + ecx - 0x198]
add edx, ecx
movzx ecx, byte [ebp - 0x16]
movzx ecx, byte [ebp + ecx - 0x198]
add edx, ecx
and edx, 0xff
movzx edx, byte [ebp + edx - 0x198]
movzx ecx, byte [ebp + edx - 0x198]
xor eax, ecx
mov byte [ebp - 0x13], al
mov dl, byte [ebp - 0x17]
mov byte [ebp - 0x14], dl
mov al, byte [ebp - 0x13]
mov byte [ebp - 0x18], al
cmp dword [ebp - 0x20], 0
jle 0x4649cc
movsx cx, byte [ebp - 0x18]
mov edx, dword [ebp - 0x20]
mov word [ebp + edx*2 - 0x1fa], cx
mov eax, 2
imul ecx, eax, 0x1a
mov dword [ebp - 0x94], ecx
cmp dword [ebp - 0x94], 0x36
jae 0x4649e5
jmp 0x4649ea
call fcn.0053f597
xor edx, edx
mov eax, dword [ebp - 0x94]
mov word [ebp + eax - 0x1f8], dx
jmp 0x464a41
mov dword [ebp - 0x7c], 0
jmp 0x464a0e
mov ecx, dword [ebp - 0x7c]
add ecx, 1
mov dword [ebp - 0x7c], ecx
cmp dword [ebp - 0x7c], 0x1b
jge 0x464a41
mov edx, dword [ebp - 0x7c]
shl edx, 1
mov dword [ebp - 0x98], edx
cmp dword [ebp - 0x98], 0x36
jae 0x464a2a
jmp 0x464a2f
call fcn.0053f597
xor eax, eax
mov ecx, dword [ebp - 0x98]
mov word [ebp + ecx - 0x1f8], ax
jmp 0x464a05
lea edx, [ebp - 8]
push edx
call fcn.00544f39
add esp, 4
mov eax, dword [ebp - 8]
xor edx, edx
mov ecx, 0x1a
div ecx
mov dword [ebp - 8], edx
mov edx, dword [ebp - 8]
mov ax, word [ebp + edx*2 - 0x1f8]
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0053f016
mov esp, ebp
pop ebp
ret