Function at 0x4585b0
Capabilities:
Encrypt data using speck

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x40
mov ecx, dword [esp + 0x5c]
mov eax, dword [esp + 0x54]
mov byte [esp + 0x33], 0x31
mov dword [ecx], 0
mov edi, dword [eax]
mov ebx, dword [eax + 4]
mov ecx, dword [eax + 8]
mov dword [esp + 0x1c], ecx
mov eax, 3
sub eax, ecx
xor eax, ecx
setne al
movzx eax, al
mov dword [esp + 0x18], eax
cmp ecx, eax
mov byte [esp + 0x26], al
mov byte [esp + 0x28], al
mov edx, 0xd
mov esi, 6
mov dword [esp + 0x3c], eax
mov dword [esp + 0x38], eax
mov dword [esp + 0x2c], eax
je 0x458cc9
mov byte [esp + 0x27], ch
mov byte [esp + 0x34], cl
mov cl, byte [esp + 0x28]
mov dword [esp + 0x38], ecx
cmp edx, 0xd
mov esi, ebp
mov ebp, dword [esp + 0x2c]
mov ecx, edx
jne 0x458642
mov edx, 3
sub edx, ecx
xor edx, ecx
je 0x458642
mov edx, dword [edi]
mov dword [esp + 0x2c], edx
jmp 0x4586cd
mov edx, dword [esp + 0x18]
cmp dword [esp + 0x1c], edx
mov ecx, 0xa
mov dl, 0x17
mov byte [esp + 0x27], 0x5f
mov dh, byte [esp + 0x28]
je 0x458a53
jmp 0x458993
mov bl, dl
add bl, 0x4c
mov byte [esp + 0x33], bl
mov esi, 3
sub esi, ecx
xor esi, ecx
setne bl
movzx esi, bl
add ecx, esi
movzx esi, byte [edi]
mov dword [esp + 0x38], esi
shl esi, 0x18
movzx ebx, byte [edi + 1]
shl ebx, 0x10
or ebx, esi
movzx esi, byte [edi + 2]
shl esi, 8
or esi, ebx
movzx ebp, byte [edi + 3]
or ebp, esi
mov esi, ecx
imul esi, esi
and esi, 3
test ecx, ecx
je 0x458670
cmp esi, 3
je 0x458670
mov dword [esp + 0x2c], ebp
mov ebx, dword [esp + 0x14]
mov esi, dword [esp + 0x20]
mov edx, dword [esp + 0x38]
mov ebp, esi
cmp ebx, dword [esp + 0x2c]
je 0x4586e0
mov esi, 0x16
xor ecx, ecx
test cl, cl
je 0x458748
mov dword [esp + 0x38], edx
lea esi, [ebx - 0x18]
mov ecx, esi
imul ecx, ecx
and ecx, 3
cmp ecx, 2
sete cl
movzx ecx, cl
cmp esi, ecx
jne 0x45878b
mov dword [esp + 0x14], ebx
mov dl, 0xc
xor ebx, ebx
mov ecx, 0x19
movzx edx, dl
cmp edx, 9
je 0x4588d1
cmp edx, 0x1a
je 0x458939
cmp edx, 0x3a
je 0x458915
mov ebp, esi
mov esi, 7
mov dword [esp], str.Transport_error_in_request._Empty_request_n
call fcn.004414c0
xor eax, eax
mov ebx, dword [esp + 0x14]
mov edx, dword [esp + 0x38]
cmp esi, 7
je 0x458cf1
mov ecx, esi
and ecx, 1
inc ecx
xor ecx, esi
je 0x458cf1
mov dword [esp + 0x38], edx
mov cl, 7
mov edx, 0x11
movzx ecx, cl
cmp ecx, 0x21
jne 0x45887e
mov ecx, dword [esp + 0x38]
mov byte [esp + 0x28], cl
mov cl, byte [esp + 0x34]
mov ch, byte [esp + 0x27]
jmp 0x45860f
mov dl, 0x2f
mov ecx, 0x1c
movzx edx, dl
cmp edx, 0x17
je 0x4587fb
mov dword [esp + 0x14], ebx
xor ebx, ebx
cmp edx, 0x2f
jne 0x45880a
add edi, 0x18
mov ebp, dword [esp + 0x58]
jmp 0x4587e0
inc ebx
mov eax, dword [esp + 0x5c]
mov dword [esp + 0xc], eax
mov dword [esp + 8], ebp
mov dword [esp + 4], esi
mov dword [esp], edi
call fcn.0064be40
test eax, eax
sete cl
mov edx, eax
or edx, 2
xor eax, 2
add eax, edx
setne al
and al, cl
movzx eax, al
mov ecx, ebx
or ecx, 2
mov edx, ebx
xor edx, 2
add edx, ecx
setne cl
movzx ecx, cl
cmp ebx, ecx
jb 0x4587b0
jmp 0x458cf1
mov ebp, esi
mov edx, dword [esp + 0x38]
mov byte [esp + 0x26], dl
jmp 0x458c89
mov ebp, esi
mov ecx, 0x6a
xor ecx, 0x6b
mov dword [esp + 0x34], ecx
lea esi, [edi + 0x18]
jmp 0x458863
mov eax, ebx
not eax
and eax, 1
add eax, ebx
setne al
movzx eax, al
add ebx, eax
mov eax, dword [esp + 0x5c]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x58]
mov dword [esp + 8], eax
mov dword [esp + 4], ebp
mov dword [esp], esi
call fcn.0064be40
mov ecx, eax
and ecx, 1
inc ecx
xor ecx, eax
sete cl
movzx ecx, cl
cmp eax, ecx
sete al
movzx eax, al
mov ecx, 3
sub ecx, ebx
xor ecx, ebx
setne cl
movzx ecx, cl
cmp ebx, ecx
jb 0x458820
mov ebx, dword [esp + 0x14]
mov edx, dword [esp + 0x34]
mov ecx, 3
sub ecx, edx
xor ecx, edx
setne cl
movzx ecx, cl
cmp edx, ecx
je 0x458cf1
mov edx, 9
mov byte [esp + 0x34], 0x17
mov byte [esp + 0x27], 0x5f
mov ecx, dword [esp + 0x18]
cmp dword [esp + 0x1c], ecx
mov esi, dword [esp + 0x38]
mov ecx, esi
mov byte [esp + 0x28], cl
mov ecx, esi
mov ch, byte [esp + 0x28]
mov byte [esp + 0x26], cl
mov esi, ebp
mov ebp, dword [esp + 0x2c]
jne 0x458c2a
jmp 0x4589ad
mov esi, 0x4a
xor esi, 0x46
jmp 0x458902
mov eax, ebx
and eax, 1
xor eax, ebx
cmp eax, 0xffffffff
setne al
movzx eax, al
add ebx, eax
mov dword [esp], str.Transport_error_in_request._Empty_request_n
call fcn.004414c0
xor eax, eax
mov ecx, esi
mov edx, 3
sub edx, ebx
xor edx, ebx
setne dl
movzx edx, dl
cmp ebx, edx
jb 0x4588e0
cmp ecx, 0xc
je 0x458cf1
xor ecx, ecx
test cl, cl
jne 0x458cf1
mov dword [esp], str.Transport_error_in_request._Empty_request_n
call fcn.004414c0
jmp 0x458b64
mov ecx, 0xeb
add ecx, 0xffffff23
mov dword [esp + 0x3c], ecx
mov ebp, dword [esp + 0x2c]
jmp 0x45896f
mov eax, 3
sub eax, ebx
xor eax, ebx
setne al
movzx eax, al
add ebx, eax
mov dword [esp], str.Transport_error_in_request._Empty_request_n
call fcn.004414c0
xor eax, eax
test ebx, ebx
jne 0x458981
mov ecx, ebx
or ecx, 2
mov edx, ebx
xor edx, 2
add edx, ecx
jne 0x458950
mov ecx, dword [esp + 0x38]
mov dh, cl
mov ebx, dword [esp + 0x14]
mov dl, byte [esp + 0x34]
mov ecx, dword [esp + 0x3c]
mov byte [esp + 0x34], dl
cmp ecx, 0xa
mov byte [esp + 0x26], dh
mov ecx, dword [esp + 0x38]
je 0x458c3e
jmp 0x458cf1
mov byte [esp + 0x28], ch
mov dword [esp + 0x20], esi
mov dword [esp + 0x14], ebx
xor eax, eax
movzx edx, ch
shl edx, 0x18
jmp 0x4589fd
mov esi, eax
not esi
and esi, 1
add esi, eax
setne ch
movzx esi, ch
add eax, esi
movzx esi, byte [edi + 1]
shl esi, 0x10
or esi, edx
movzx ebx, byte [edi + 2]
shl ebx, 8
or ebx, esi
movzx ecx, byte [edi + 3]
or ecx, ebx
mov dword [esp + 0x3c], ecx
mov esi, eax
or esi, 2
mov ebx, eax
xor ebx, 2
add ebx, esi
setne ch
movzx esi, ch
cmp eax, esi
jb 0x4589d0
mov al, byte [esp + 0x28]
mov byte [esp + 0x26], al
mov ebx, dword [esp + 0x14]
mov ecx, dword [esp + 0x38]
mov dl, byte [esp + 0x34]
mov dh, byte [esp + 0x27]
xor esi, esi
movzx eax, dl
cmp eax, 0x26
je 0x458abf
cmp eax, 0x72
je 0x458aa3
mov byte [esp + 0x27], dh
mov dword [esp + 0x38], ecx
mov dh, byte [esp + 0x26]
mov esi, dword [esp + 0x20]
mov ecx, 0x13
cmp ecx, 0xa
jne 0x458b47
mov eax, ecx
or eax, 2
xor ecx, 2
add ecx, eax
je 0x458b47
mov byte [esp + 0x34], dl
mov ch, dh
jmp 0x4589ad
cmp ecx, 2
adc esi, 0
mov eax, dword [esp + 0x3c]
mov dword [esp + 8], eax
mov dword [esp + 4], ebx
mov dword [esp], str.Transport_error_in_request._Received__u_instead_of__u_n
call fcn.004414c0
call fcn.00447d00
xor eax, eax
test esi, esi
jne 0x458cf1
mov ecx, esi
imul ecx, ecx
and ecx, 3
cmp ecx, 1
jbe 0x458a80
jmp 0x458cf1
mov dword [esp + 0x2c], ebp
mov byte [esp + 0x27], dh
mov byte [esp + 0x34], dl
mov dword [esp + 0x38], ecx
mov ebp, ebx
mov ebx, 0xba
lea eax, [ebx - 0xaf]
mov dword [esp + 0x28], eax
xor ebx, eax
jmp 0x458b20
mov al, bl
xor al, 0x97
mov byte [esp + 0x34], al
cmp ecx, 0xffffffff
setne al
movzx eax, al
add esi, eax
mov eax, dword [esp + 0x3c]
mov dword [esp + 8], eax
mov dword [esp + 4], ebp
mov dword [esp], str.Transport_error_in_request._Received__u_instead_of__u_n
call fcn.004414c0
call fcn.00447d00
mov ecx, esi
and ecx, 1
xor ecx, esi
cmp ecx, 0xffffffff
setne al
movzx edx, al
xor eax, eax
cmp esi, edx
jb 0x458af0
mov esi, dword [esp + 0x20]
mov edx, dword [esp + 0x38]
mov ebx, dword [esp + 0x28]
jmp 0x458be0
mov eax, dword [esp + 0x3c]
mov dword [esp + 8], eax
mov dword [esp + 4], ebx
mov dword [esp], str.Transport_error_in_request._Received__u_instead_of__u_n
call fcn.004414c0
call fcn.00447d00
xor eax, eax
jmp 0x458cf1
mov dword [esp + 0x20], esi
mov dh, 3
mov eax, dword [edi]
mov dword [esp + 0x3c], eax
mov dl, byte [esp + 0x34]
jmp 0x458a2b
mov dl, bl
add dl, 0xfa
mov byte [esp + 0x33], dl
mov edx, ecx
not edx
and edx, 1
add edx, ecx
setne dl
movzx edx, dl
add ecx, edx
movzx edx, byte [edi]
mov dword [esp + 0x38], edx
shl edx, 0x18
movzx esi, byte [edi + 1]
shl esi, 0x10
or esi, edx
movzx edx, byte [edi + 2]
shl edx, 8
or edx, esi
movzx ebp, byte [edi + 3]
or ebp, edx
mov edx, ecx
imul edx, edx
and edx, 3
cmp edx, 2
sbb edx, edx
and edx, 1
cmp ecx, edx
jb 0x458b80
mov dword [esp + 0x2c], ebp
mov esi, dword [esp + 0x20]
mov edx, dword [esp + 0x38]
mov ebp, dword [esp + 0x14]
cmp ebx, 0xb
je 0x458cf1
mov ecx, ebx
and ecx, 1
inc ecx
xor ecx, ebx
mov ebx, ebp
jne 0x4586cd
jmp 0x458cf1
mov edx, 0xe
movzx esi, byte [esp + 0x33]
cmp esi, 0x14
je 0x458c26
xor ecx, ecx
cmp esi, 0x31
jne 0x458cf9
mov dword [esp + 0x14], ebx
mov ebx, 0x56
xor ebx, 0x41
jmp 0x458bbc
mov esi, dword [esp + 0x20]
cmp edx, 9
jne 0x458c57
mov ecx, edx
not ecx
and ecx, 1
add ecx, edx
je 0x458c57
mov ecx, dword [esp + 0x38]
movzx eax, byte [esp + 0x27]
cmp eax, 3
jne 0x458b6b
mov dword [esp + 0x20], esi
mov dh, 0x5f
jmp 0x458b71
mov ebp, esi
mov ecx, 0xc
mov byte [esp + 0x33], 0x31
movzx edx, byte [edi]
mov dword [esp + 0x38], edx
shl edx, 0x18
movzx esi, byte [edi + 1]
shl esi, 0x10
or esi, edx
movzx edx, byte [edi + 2]
shl edx, 8
or edx, esi
movzx esi, byte [edi + 3]
or esi, edx
mov dword [esp + 0x2c], esi
cmp ecx, 0xc
jne 0x458c95
mov esi, ebp
jmp 0x4586c9
mov esi, 0x14
lea eax, [edi + 0x18]
mov ecx, dword [esp + 0x5c]
mov dword [esp + 0xc], ecx
mov ecx, dword [esp + 0x58]
mov dword [esp + 8], ecx
mov dword [esp + 4], ebp
mov dword [esp], eax
call fcn.0064be40
test eax, eax
sete al
movzx eax, al
mov cl, byte [esp + 0x34]
mov ch, byte [esp + 0x27]
mov byte [esp + 0x27], ch
mov byte [esp + 0x34], cl
mov dword [esp + 0x20], ebp
cmp esi, 6
mov ebp, dword [esp + 0x2c]
je 0x458bfe
imul esi, esi
and esi, 3
cmp esi, 3
je 0x458bfe
add esp, 0x40
pop esi
pop edi
pop ebx
pop ebp
ret
mov dword [esp + 0x14], ebx
mov esi, 0xe2
mov edx, 0xe2
xor edx, 0x48
sub edx, esi
jmp 0x4586ac