Function at 0x4dd150
Capabilities:
Encrypt data using speck

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x48
mov esi, dword [esp + 0x64]
mov edi, dword [esp + 0x60]
mov eax, edx
and eax, 1
inc eax
xor eax, edx
sete al
movzx eax, al
cmp edx, eax
jne 0x4dd1d4
mov al, 0x33
movzx eax, al
cmp eax, 0x33
je 0x4dd2ac
cmp eax, 0x59
jne 0x4dd2ef
mov dword [esp + 0x24], ecx
mov eax, 6
mov ecx, dword [esi + 4]
lea esi, [ecx - 3]
cmp esi, 0x23
ja case.default.0x4dd1cd
mov dword [esp + 0x30], 0x700002bb
mov byte [esp + 0x2d], 0x75
mov byte [esp + 0x2f], 0x25
mov ebp, 0xc
mov edx, 2
mov ebx, 4
mov dword [esp + 0x28], ecx
mov byte [esp + 0x2e], cl
mov byte [esp + 0x23], cl
jmp dword [esi*4 + 0x7db978]
mov dl, 8
mov eax, dword [0x7dc5e0]
mov dword [esp + 0x3c], eax
movsd xmm0, qword [0x7dc5d8]
movsd qword [esp + 0x34], xmm0
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x40], edi
mov eax, dword [esi + 0xc]
shl eax, 0x18
or eax, dword [esi + 8]
mov dword [esp + 0x44], eax
mov eax, edi
and eax, 1
inc eax
xor eax, edi
sete al
movzx eax, al
cmp edi, eax
jne 0x4dd237
mov byte [esp + 0x2e], 8
mov dword [esp + 0x24], ecx
mov eax, 0xb
mov dword [esp + 0x28], 0x7000002b
mov byte [esp + 0x2f], cl
mov byte [esp + 0x2d], cl
jmp 0x4dd754
mov al, 0x4e
movzx eax, al
cmp eax, 3
je 0x4dd3a8
cmp eax, 0x5b
jne 0x4dd409
mov dword [esp + 0x24], ecx
mov ebp, 0x7000002b
mov esi, 0x12
mov byte [esp + 0x23], ah
mov dword [esp + 0x28], ebp
mov dword [esp + 0x30], edi
mov byte [esp + 0x2e], dl
mov byte [esp + 0x2d], cl
mov byte [esp + 0x2f], al
cmp esi, 3
je 0x4dd9cc
mov esi, 0xf
lea eax, [esp + 0x34]
mov dword [esp], eax
call fcn.00595750
test eax, eax
je 0x4dd4c1
mov dword [esp + 0x28], 0
cmp eax, 2
je 0x4dd761
jmp 0x4dd472
mov dword [esp + 0x24], ecx
mov ecx, dword [esi + 4]
lea esi, [ecx - 3]
cmp esi, 0x23
ja case.default.0x4dd2e8
mov dword [esp + 0x30], 0x700002bb
mov byte [esp + 0x2d], 0x75
mov byte [esp + 0x2f], 0x25
mov eax, 2
mov ecx, 0x15
mov edx, 0xd
mov byte [esp + 0x2e], bl
mov dword [esp + 0x28], edi
jmp dword [esi*4 + 0x7dba08]
mov dword [esp + 0x24], ecx
mov eax, 0xa
mov byte [esp + 0x2f], cl
mov byte [esp + 0x2d], cl
cmp eax, 2
mov dword [esp + 0x30], 0x700002bb
je 0x4dd43c
mov ecx, eax
and ecx, 1
inc ecx
xor ecx, eax
mov dword [esp + 0x28], eax
mov byte [esp + 0x2e], al
mov byte [esp + 0x23], al
je case.0x4dd1cd.16
mov eax, dword [esp + 0x64]
mov eax, dword [eax + 4]
lea edi, [eax - 3]
cmp edi, 0x23
ja case.default.0x4dd375
mov dword [esp + 0x30], 0x700002bb
mov byte [esp + 0x2d], 0x75
mov byte [esp + 0x2f], 0x25
mov edx, 0x1b
mov esi, 0x13
mov ebp, 0x16
mov ebx, 2
mov eax, 0xf
mov byte [esp + 0x2e], cl
mov byte [esp + 0x23], cl
mov dword [esp + 0x28], ecx
jmp dword [edi*4 + 0x7dba98]
cmp ebx, 2
mov dword [esp + 0x30], 0x700002bb
je 0x4dd588
mov eax, ebx
and eax, 1
inc eax
xor eax, ebx
mov byte [esp + 0x2e], al
mov dword [esp + 0x28], eax
jne case.0x4dd375.18
jmp case.0x4dd2e8.5
mov byte [esp + 0x2e], 8
mov dword [esp + 0x24], ecx
lea eax, [esp + 0x34]
mov dword [esp], eax
call fcn.00595750
test eax, eax
je 0x4dd47f
mov ecx, 7
mov edx, 0x12
cmp eax, 2
mov byte [esp + 0x2f], al
mov byte [esp + 0x2d], al
jne case.0x4dd2e8.3
cmp ecx, 7
je 0x4dd532
mov dword [esp + 0x28], 0
imul ecx, ecx
and ecx, 3
mov dword [esp + 0x30], 0x700002bb
cmp ecx, 2
jne case.0x4dd375.18
jmp 0x4dd761
mov byte [esp + 0x2e], 8
mov dword [esp + 0x24], ecx
lea eax, [esp + 0x34]
mov dword [esp], eax
mov dword [esp + 0x28], 0
call fcn.00595750
or eax, 2
cmp eax, 2
mov byte [esp + 0x2f], al
mov byte [esp + 0x2d], al
je 0x4dd761
jmp 0x4dd472
mov dword [esp + 0x28], eax
mov byte [esp + 0x2e], al
mov byte [esp + 0x23], al
jmp case.0x4dd1cd.16
cmp edx, 0xd
jne 0x4dd472
mov eax, edx
not eax
and eax, 1
add eax, edx
je 0x4dd472
mov dword [esp + 0x30], 0x700002bb
mov dword [esp + 0x28], 0
jmp case.0x4dd2e8.5
mov dword [esp + 0x28], 0x7000002b
jmp 0x4dd761
mov dword [esp + 0x28], 0
mov byte [esp + 0x2f], al
mov byte [esp + 0x2d], al
jmp 0x4dd761
cmp ecx, 0x31
je 0x4dd53f
mov dword [esp + 0x30], 0x700002bb
mov byte [esp + 0x2d], 0x75
mov byte [esp + 0x2f], 0x25
mov esi, 8
cmp ecx, 0x32
mov byte [esp + 0x2e], cl
jne case.0x4dd1cd.4
mov dword [esp + 0x28], 0
cmp esi, 8
jne 0x4dd761
mov eax, 3
sub eax, esi
xor eax, esi
jne case.0x4dd2e8.5
jmp 0x4dd761
mov eax, 0x16
cmp ecx, 0x31
je 0x4dd553
mov dword [esp + 0x30], 0x700002bb
mov byte [esp + 0x2d], 0x75
mov byte [esp + 0x2f], 0x25
cmp ecx, 0x32
jmp 0x4dd575
mov dword [esp + 0x30], 0x700002bb
mov byte [esp + 0x2d], 0x75
mov byte [esp + 0x2f], 0x25
add eax, 0xffffffcf
cmp eax, 2
mov byte [esp + 0x2e], al
mov dword [esp + 0x28], eax
jb case.0x4dd2e8.5
jmp case.0x4dd2e8.4
mov dword [esp + 0x28], 0
jmp 0x4dd761
mov dword [esp + 0x30], 0x700002bb
mov byte [esp + 0x2d], 0x75
mov byte [esp + 0x2f], 0x25
jmp 0x4dd588
mov byte [esp + 0x2d], 0x75
mov byte [esp + 0x2f], 0x25
mov dword [esp + 0x30], 0x700002bb
cmp eax, 6
jne 0x4dd588
mov ecx, eax
and ecx, 1
xor ecx, eax
not ecx
test ecx, ecx
mov byte [esp + 0x2e], al
mov dword [esp + 0x28], eax
jne case.0x4dd2e8.4
jmp case.0x4dd2e8.5
mov byte [esp + 0x2e], al
mov dword [esp + 0x28], eax
jmp case.0x4dd2e8.5
mov eax, dword [0x7dc5e0]
mov dword [esp + 0x3c], eax
movsd xmm0, qword [0x7dc5d8]
movsd qword [esp + 0x34], xmm0
mov eax, dword [esp + 0x24]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x60]
mov edx, eax
mov dword [esp + 0x40], edx
mov eax, dword [esp + 0x64]
mov ecx, eax
mov eax, dword [ecx + 0xc]
shl eax, 0x18
or eax, dword [ecx + 8]
mov dword [esp + 0x44], eax
test edx, edx
je 0x4dd613
mov byte [esp + 0x2f], 0x25
mov cl, 0x72
jmp 0x4dd7f8
mov byte [esp + 0x23], 0x6f
lea eax, [esp + 0x34]
mov dword [esp], eax
call fcn.00595750
test eax, eax
je 0x4dd60a
mov dword [esp + 0x30], esi
mov ecx, 4
cmp eax, 2
je 0x4dd9ef
jmp 0x4dd613
mov dword [esp + 0x30], esi
jmp 0x4dd9cc
mov dword [esp + 0x30], 0x7000002b
jmp case.0x4dd2e8.4
mov byte [esp + 0x2d], 0x1d
mov eax, dword [esp + 0x64]
mov dword [esp], eax
mov dword [esp + 4], 0
mov edx, 0x11
mov ecx, dword [esp + 0x5c]
call fcn.0058fa80
test eax, eax
je 0x4dd74f
mov ecx, eax
and ecx, 1
inc ecx
xor ecx, eax
je 0x4dd74f
mov dword [esp + 0x30], eax
mov esi, 7
cmp esi, 7
je case.0x4dd2e8.4
mov eax, esi
and eax, 1
inc eax
xor eax, esi
jne case.0x4dd2e8.5
jmp case.0x4dd2e8.4
mov eax, dword [0x7dc5e0]
mov dword [esp + 0x3c], eax
movsd xmm0, qword [0x7dc5d8]
movsd qword [esp + 0x34], xmm0
mov eax, dword [esp + 0x24]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x60]
mov edx, eax
mov dword [esp + 0x40], edx
mov eax, dword [esp + 0x64]
mov ecx, eax
mov eax, dword [ecx + 0xc]
shl eax, 0x18
or eax, dword [ecx + 8]
mov dword [esp + 0x44], eax
mov eax, edx
imul eax, eax
and eax, 3
cmp eax, 3
sete al
movzx eax, al
cmp edx, eax
je 0x4dd728
lea eax, [esp + 0x34]
mov dword [esp], eax
call fcn.00595750
or eax, 2
cmp eax, 2
jne 0x4dd728
mov eax, dword [esp + 0x64]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 9
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
xor ecx, ecx
xor edx, edx
call fcn.0054f990
mov dword [esp + 0x30], eax
mov ecx, eax
and ecx, 1
inc ecx
xor ecx, eax
jmp 0x4dd745
mov al, 0x13
mov ecx, 0xf
movzx eax, al
cmp eax, 0x54
je 0x4dd888
mov dword [esp + 0x30], 0x7000002b
jmp case.0x4dd2e8.4
sete cl
movzx ecx, cl
cmp eax, ecx
jne case.0x4dd2e8.4
mov eax, 5
mov dword [esp + 0x30], 0
cmp eax, 5
je case.0x4dd2e8.4
movzx eax, byte [esp + 0x2e]
cmp eax, 0x3d
je 0x4dd770
cmp eax, 0x47
jne 0x4dd77a
mov eax, dword [esp + 0x28]
mov dword [esp + 0x30], eax
jmp case.0x4dd2e8.4
mov edx, 0x11
mov byte [esp + 0x2e], 0x3d
mov esi, dword [esp + 0x28]
jmp 0x4dd982
mov eax, dword [esp + 0x30]
add esp, 0x48
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, 0x1b
mov byte [esp + 0x2f], 0x75
mov cl, 0x72
mov edx, dword [0x7dc5e0]
mov dword [esp + 0x3c], edx
movsd xmm0, qword [0x7dc5d8]
movsd qword [esp + 0x34], xmm0
mov edx, dword [esp + 0x24]
mov dword [esp + 0x3c], edx
mov edx, dword [esp + 0x60]
mov edi, edx
mov dword [esp + 0x40], edi
mov edx, dword [esp + 0x64]
mov esi, edx
mov edx, dword [esi + 0xc]
shl edx, 0x18
or edx, dword [esi + 8]
mov dword [esp + 0x44], edx
mov edx, edi
and edx, 1
inc edx
xor edx, edi
sete dl
movzx edx, dl
cmp edi, edx
je 0x4dd9fa
mov eax, 0xb
movsx edx, cl
cmp edx, 0x26
jg 0x4dd846
movzx ecx, cl
cmp ecx, 0x16
je 0x4dd8f0
cmp ecx, 0x1b
jne case.0x4dd375.34
mov esi, 3
mov byte [esp + 0x23], 0x6f
lea eax, [esp + 0x34]
mov dword [esp], eax
call fcn.00595750
test eax, eax
je 0x4dd9b1
cmp eax, 2
je 0x4dd9cc
jmp 0x4dd613
mov edx, 9
movzx ecx, cl
cmp ecx, 0x27
je 0x4dd97e
cmp ecx, 0x63
jne case.0x4dd375.34
mov byte [esp + 0x23], 0x6f
lea eax, [esp + 0x34]
mov dword [esp], eax
call fcn.00595750
test eax, eax
je 0x4dd9cc
mov edx, 0x10
mov ecx, 3
cmp eax, 2
jne case.0x4dd375.16
cmp ecx, 3
je 0x4dd9cc
mov eax, 4
mov dword [esp + 0x30], 0x7000002b
jmp 0x4dd970
cmp eax, 0xb
je 0x4dd8b7
imul eax, eax
and eax, 3
cmp eax, 2
jne case.0x4dd2e8.5
mov ebp, 7
mov byte [esp + 0x23], 0x6f
lea eax, [esp + 0x34]
mov dword [esp], eax
call fcn.00595750
or eax, 2
cmp eax, 2
je 0x4dd9cc
cmp ebp, 7
jne case.0x4dd375.18
mov eax, ebp
or eax, 2
xor ebp, 2
add ebp, eax
jne 0x4dd613
jmp case.0x4dd375.18
mov byte [esp + 0x23], 0x6f
lea eax, [esp + 0x34]
mov dword [esp], eax
call fcn.00595750
test eax, eax
je 0x4dd9cc
mov ebp, 0xd
cmp eax, 2
jne 0x4dd613
cmp ebp, 0xd
jne case.0x4dd375.18
imul ebp, ebp
and ebp, 3
cmp ebp, 2
jb 0x4dd9cc
mov eax, 7
movzx ecx, byte [esp + 0x2d]
cmp ecx, 0x75
jne 0x4dd970
mov byte [esp + 0x2d], 0x75
mov eax, dword [esp + 0x64]
mov dword [esp], eax
mov dword [esp + 4], 0
mov edx, 0x11
mov ecx, dword [esp + 0x5c]
call fcn.0058fa80
mov dword [esp + 0x30], eax
mov ecx, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 2
jmp 0x4dd745
cmp eax, 4
jne 0x4dd620
jmp case.0x4dd2e8.4
mov esi, dword [esp + 0x30]
cmp edx, 9
je 0x4dd5e1
mov dword [esp + 0x30], esi
jmp case.0x4dd2e8.4
cmp edx, 0x10
je 0x4dd613
imul edx, edx
and edx, 3
cmp edx, 3
jne case.0x4dd1cd.16
jmp 0x4dd613
mov al, byte [esp + 0x2f]
mov cl, byte [esp + 0x2d]
mov dl, byte [esp + 0x2e]
mov edi, dword [esp + 0x30]
mov ah, 0x6f
mov ebp, dword [esp + 0x28]
jmp 0x4dd25c
mov eax, 0xc
movzx ecx, byte [esp + 0x23]
cmp ecx, 0x4e
je 0x4dd9fa
mov edx, 6
cmp ecx, 0x6f
jne case.0x4dd1cd.3
mov ecx, 1
mov byte [esp + 0x23], 0x13
cmp ecx, 1
je 0x4dd74f
jmp 0x4dd9cc
cmp eax, 0xc
je 0x4dd74f
xor eax, eax
test al, al
je 0x4dd613
jmp 0x4dd74f
cmp edx, 2
je case.0x4dd2e8.5
imul edx, edx
and edx, 3
cmp edx, 3
jne 0x4dd74f
movzx eax, byte [esp + 0x2f]
cmp eax, 0x75
je 0x4dd595
jmp 0x4dd799