Function at 0x41ac80
Capabilities:
Encrypt data using speck

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x4c
mov edi, dword [esp + 0x68]
mov ebp, dword [esp + 0x64]
mov esi, 0xb
mov eax, edi
imul eax, eax
and eax, 3
cmp eax, 3
sete al
test ebp, ebp
je 0x41acec
mov ecx, ebp
and ecx, 1
xor ecx, ebp
not ecx
test ecx, ecx
je 0x41acec
mov dword [esp + 0x34], 2
movzx eax, al
cmp edi, eax
mov dword [esp + 0x40], eax
mov dword [esp + 0x3c], eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x48], eax
mov byte [esp + 0x13], al
mov byte [esp + 0xb], al
mov dword [esp + 0x14], eax
mov dword [esp + 0x44], eax
mov dword [esp + 0x18], eax
jne 0x41b2c3
jmp 0x41ad10
mov dword [esp + 0x40], eax
mov dword [esp + 0x3c], eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x48], eax
mov dword [esp + 0x14], eax
mov byte [esp + 0x13], al
mov byte [esp + 0xb], al
mov dword [esp + 0x44], eax
mov dword [esp + 0x18], eax
mov byte [esp + 0x23], bl
xor eax, eax
cmp esi, 0xb
mov esi, dword [esp + 0x3c]
je 0x41ad29
xor ecx, ecx
test cl, cl
je 0x41af9a
add esp, 0x4c
pop esi
pop edi
pop ebx
pop ebp
ret
mov esi, dword [esp + 0x60]
movzx edx, byte [esi]
mov ecx, edx
imul ecx, ecx
and ecx, 3
cmp ecx, 2
sete cl
movzx ecx, cl
cmp edx, ecx
jne 0x41ad51
xor ecx, ecx
jmp 0x41ad7d
mov dword [esp + 0x38], eax
mov dword [esp + 0x30], esi
mov dword [esp + 0x2c], edx
mov ecx, 0x18
mov byte [esp + 0x23], 0x14
mov dl, 0x1a
mov dword [esp + 0x40], edx
xor ebx, ebx
mov byte [esp + 0xb], 0x49
mov esi, dword [esp + 0x3c]
jmp 0x41aed1
xor eax, eax
xor edx, edx
jmp 0x41ada9
mov eax, edx
and eax, 1
xor eax, edx
cmp eax, 0xffffffff
setne al
movzx eax, al
add edx, eax
mov byte [ebp + ecx], 0
mov eax, ecx
mov esi, edx
not esi
and esi, 1
add esi, edx
setne bl
movzx esi, bl
cmp edx, esi
jb 0x41ad90
jmp 0x41ad29
mov byte [esp + 0x23], 0x67
mov al, byte [esi]
mov dword [esp + 0x2c], eax
test al, al
mov ecx, edx
mov dword [esp + 0x30], esi
je 0x41ad7d
mov eax, edx
not eax
and eax, 1
add eax, edx
setne al
movzx eax, al
add eax, edx
cmp eax, edi
jb 0x41adfc
mov ecx, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 3
je 0x41adfc
mov ecx, edx
jmp 0x41ad7d
mov ebx, edx
mov dword [esp + 0x3c], esi
mov esi, 0x18
mov ecx, dword [esp + 0x2c]
movzx ecx, cl
mov edx, dword [esp + 0x30]
inc edx
mov dword [esp + 0x1c], edx
cmp ecx, 0x25
jne 0x41ae5c
mov edx, ecx
or edx, 2
xor ecx, 2
add ecx, edx
je 0x41ae5c
movzx edx, byte [esp + 0xb]
cmp edx, 0x41
mov esi, dword [esp + 0x3c]
jne 0x41ae83
mov dword [esp + 0x38], eax
mov dword [esp + 4], ebx
mov eax, 0xf
mov ecx, dword [esp + 0x2c]
mov byte [esp + 0x13], cl
mov dword [esp + 0x44], ebx
mov ebx, dword [esp + 0x30]
mov dword [esp + 0x18], ebx
jmp 0x41b161
mov edx, ebx
mov dword [esp + 0x28], edx
mov ecx, eax
mov eax, dword [esp + 0x2c]
mov byte [esp + 0x13], al
mov eax, edx
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x18], eax
mov bl, byte [esp + 0x23]
jmp 0x41b201
mov dword [esp + 0x38], eax
mov byte [esp + 0xb], 0x49
mov ecx, dword [esp + 0x1c]
movzx ecx, byte [ecx]
mov dword [esp + 0x48], ecx
movzx edx, byte [ecx + ecx + str.________________________________H]
test dl, dl
jns 0x41aef5
mov ecx, 0xa
mov esi, 3
sub esi, edx
xor esi, edx
mov edx, dword [esp + 0x2c]
mov byte [esp + 0x13], dl
mov esi, ebx
mov dword [esp + 0x44], esi
mov edx, dword [esp + 0x30]
mov dword [esp + 0x18], edx
mov esi, dword [esp + 0x3c]
je 0x41af86
cmp ecx, 0xa
jne 0x41aeee
mov edx, 3
sub edx, ecx
xor edx, ecx
mov edx, ebx
mov eax, edx
jne 0x41b1af
jmp 0x41add6
mov edx, ebx
jmp 0x41add6
mov ecx, dword [esp + 0x2c]
mov byte [esp + 0x13], cl
mov dword [esp + 0x44], ebx
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x18], ecx
jmp 0x41af86
mov ecx, 0xcd
add cl, 0xa4
mov dword [esp + 0x40], ecx
inc eax
or dh, bl
mov esi, dword [esp + 0x64]
mov ecx, dword [esp + 0x44]
mov byte [esi + ecx], dh
dec edi
mov esi, dword [esp + 0x2c]
mov ebx, eax
and ebx, 1
xor ebx, edi
setne dh
movzx ebx, dh
cmp eax, ebx
jae 0x41af78
cmp dword [esp + 0x3c], 2
mov ebx, dword [esp + 0x48]
mov dh, bl
je 0x41af51
mov dh, byte [esp + 0x28]
cmp dword [esp + 0x34], 0x3a
jl 0x41af5a
mov bl, dh
mov esi, dword [esp + 0x38]
xor esi, ebp
mov bh, dl
je 0x41af68
mov bh, byte [esp + 0x24]
shl bl, 4
cmp dword [esp + 0x30], 0x3a
mov dh, dl
jl 0x41af10
mov dh, bh
jmp 0x41af10
mov ebp, dword [esp + 0x64]
mov edi, dword [esp + 0x68]
mov edx, dword [esp + 0xc]
jmp 0x41af9a
mov ecx, dword [esp + 0x44]
mov dl, byte [esp + 0x13]
mov byte [ebp + ecx], dl
mov esi, dword [esp + 0x1c]
mov edx, dword [esp + 0x38]
mov bl, byte [esp + 0x23]
movzx ecx, bl
cmp ecx, 0x14
je 0x41adc1
cmp ecx, 0x35
je 0x41afd9
mov eax, 3
cmp ecx, 0x67
mov ecx, dword [esp + 0x48]
jne 0x41affc
movzx ecx, byte [esi]
mov eax, ecx
and eax, 1
inc eax
xor eax, ecx
sete al
movzx eax, al
cmp ecx, eax
jne 0x41b018
mov ecx, edx
jmp 0x41ad7d
movzx ecx, byte [esi]
mov eax, ecx
imul eax, eax
and eax, 3
cmp eax, 3
sete al
movzx eax, al
cmp ecx, eax
mov ebx, dword [esp + 0x48]
jne 0x41b002
mov ecx, edx
jmp 0x41ad7d
mov dword [esp + 4], edx
jmp 0x41b02a
mov dword [esp + 0x2c], ecx
mov eax, 5
mov cl, 0x14
mov edi, edx
mov dword [esp + 0x30], esi
jmp 0x41b320
mov dword [esp + 0x2c], ecx
mov byte [esp + 0x23], 0x35
mov dword [esp + 0x30], esi
jmp 0x41add6
cmp eax, 3
je 0x41b136
imul eax, eax
and eax, 3
cmp eax, 2
je 0x41b136
mov dword [esp + 0x3c], esi
mov byte [esp + 0x23], bl
xor ebp, ebp
mov edx, 0x42
lea esi, [edx + edx - 0x5b]
lea edx, [edx - 0x2b]
mov dword [esp], edx
movzx eax, cl
imul eax, eax
and eax, 3
mov dword [esp + 0x38], eax
mov al, cl
and al, 7
add al, 9
mov byte [esp + 0xc], al
mov ebx, dword [esp + 0x14]
movzx eax, bl
imul eax, eax
and eax, 3
mov dword [esp + 0x34], eax
mov edx, ecx
mov dword [esp + 0x48], edx
mov al, bl
add al, 0xd0
mov byte [esp + 0x30], al
mov ch, bl
and ch, 7
add ch, 9
movsx eax, dl
mov dword [esp + 0x2c], eax
movsx eax, bl
mov dword [esp + 0x28], eax
mov edx, dword [esp + 0x18]
lea eax, [edx + 3]
mov dword [esp + 0x24], eax
mov ebx, dword [esp + 0x40]
jmp 0x41b0de
add ebp, edi
mov eax, esi
mov bl, al
xor bl, 0x33
or cl, dl
mov edx, dword [esp + 0x64]
mov edi, dword [esp + 0x44]
mov byte [edx + edi], cl
mov eax, dword [esp + 0x24]
mov dword [esp + 0x3c], eax
mov edx, ebp
not edx
and edx, 1
mov edi, ebp
add edi, edx
setne cl
movzx edi, cl
cmp ebp, edi
jae 0x41b2f2
add edx, ebp
setne dh
cmp dword [esp + 0x38], 3
mov ebx, dword [esp + 0x48]
mov cl, bl
je 0x41b10d
mov cl, byte [esp + 0xc]
cmp dword [esp + 0x2c], 0x3a
mov dl, bl
jl 0x41b118
mov dl, cl
cmp dword [esp + 0x34], 2
mov cl, byte [esp + 0x30]
jb 0x41b125
mov cl, ch
movzx edi, dh
shl dl, 4
cmp dword [esp + 0x28], 0x3a
jl 0x41b0c0
mov cl, ch
jmp 0x41b0c0
mov dword [esp + 0x48], ecx
mov edx, 0x19
mov byte [esp + 0x23], 0x5c
mov al, byte [esi]
mov dword [esp + 0x2c], eax
test al, al
mov ebx, esi
mov ecx, dword [esp + 4]
mov dword [esp + 0x38], ecx
mov eax, 0x17
je 0x41b2b1
mov dword [esp + 0x30], ebx
cmp eax, 0xf
je 0x41b179
xor ecx, ecx
test cl, cl
jne 0x41b179
mov edx, dword [esp + 4]
jmp 0x41add6
mov byte [esp + 0xb], 0x41
mov ecx, dword [esp + 0x1c]
movzx ecx, byte [ecx]
mov dword [esp + 0x48], ecx
movsx ecx, byte [ecx + ecx + str.________________________________H]
movzx edx, cl
imul edx, edx
and edx, 3
cmp edx, 3
sete dl
movzx edx, dl
cmp ecx, edx
mov eax, dword [esp + 4]
jge 0x41af86
mov dword [esp + 0x3c], esi
mov dword [esp + 0x34], 0xe
mov ecx, dword [esp + 0x18]
movzx ecx, byte [ecx + 2]
mov dword [esp + 0x14], ecx
movsx edx, byte [ecx + ecx + str.________________________________H]
movzx esi, dl
mov ecx, edi
mov edi, edx
and edi, 1
inc edi
xor edi, esi
mov esi, 0xd
sete bl
movzx edi, bl
mov bl, byte [esp + 0x23]
cmp edx, edi
mov edi, ecx
mov dword [esp + 0x28], eax
mov edx, eax
mov eax, dword [esp + 0x38]
mov ecx, eax
jge 0x41b2c3
cmp esi, 0xd
jne 0x41b2e5
imul esi, esi
and esi, 3
cmp esi, 2
jae 0x41b2e5
mov dword [esp + 4], ecx
mov eax, 9
mov ecx, dword [esp + 0x40]
movzx ecx, cl
cmp ecx, 0x1a
je 0x41b30e
cmp ecx, 0x1d
mov esi, dword [esp + 0x3c]
jne 0x41b3b1
mov dword [esp + 0xc], edx
mov ecx, dword [esp + 0x48]
movsx eax, cl
cmp eax, 0x3a
mov al, cl
jl 0x41b257
mov al, cl
and al, 7
add al, 9
mov ecx, dword [esp + 0x14]
movsx edx, cl
movzx esi, cl
imul esi, esi
and esi, 3
add cl, 0xd0
cmp esi, 2
mov ah, cl
je 0x41b281
mov ch, bl
mov ebx, dword [esp + 0x14]
mov ah, bl
mov bl, ch
and ah, 7
add ah, 9
mov ch, bl
shl al, 4
cmp edx, 0x3a
jl 0x41b28d
mov cl, ah
mov edx, 0x10
mov bl, 0x1d
mov dword [esp + 0x40], ebx
or cl, al
mov eax, dword [esp + 0x44]
mov byte [ebp + eax], cl
mov eax, dword [esp + 0x18]
lea esi, [eax + 3]
mov byte [esp + 0x23], ch
mov ecx, dword [esp + 0xc]
cmp edx, 0x10
mov edx, dword [esp + 4]
jne 0x41ad7d
jmp 0x41af9a
cmp dword [esp + 0x34], 2
je 0x41ad31
xor ecx, ecx
test cl, cl
jne 0x41ad31
mov dword [esp + 0x38], eax
mov byte [esp + 0x23], bl
jmp 0x41af86
mov byte [esp + 0x23], bl
mov dword [esp + 0x38], ecx
jmp 0x41af86
mov dword [esp + 0x40], ebx
mov edx, dword [esp + 4]
mov ebp, dword [esp + 0x64]
mov edi, dword [esp + 0x68]
mov bl, byte [esp + 0x23]
mov esi, dword [esp]
jmp 0x41ad10
mov cl, bl
mov edx, dword [esp + 4]
mov ebx, dword [esp + 0x48]
mov esi, dword [esp + 0x3c]
mov edi, dword [esp + 0x28]
cmp eax, 5
je 0x41b39e
imul eax, eax
and eax, 3
cmp eax, 2
je 0x41b39e
mov dword [esp + 0xc], edx
mov byte [esp + 0x23], cl
xor eax, eax
mov edi, 0xffffffff
mov dword [esp + 0x48], ebx
movzx ecx, bl
imul ecx, ecx
and ecx, 3
mov dword [esp + 0x3c], ecx
mov cl, bl
and cl, 7
add cl, 9
mov byte [esp + 0x28], cl
mov ebx, dword [esp + 0x14]
movzx ebp, bl
mov dword [esp + 0x38], ebp
and ebp, 1
inc ebp
mov dl, bl
add dl, 0xd0
mov cl, bl
and cl, 7
add cl, 9
mov byte [esp + 0x24], cl
mov ecx, dword [esp + 0x48]
movsx ecx, cl
mov dword [esp + 0x34], ecx
movsx ecx, bl
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x18]
lea ecx, [ecx + 3]
mov dword [esp + 0x2c], ecx
jmp 0x41af2f
mov byte [esp + 0x23], cl
mov dword [esp + 0x48], ebx
mov edx, edi
mov edi, dword [esp + 0x68]
jmp 0x41add6
mov ecx, dword [esp + 0x48]
jmp 0x41b02a