Function at 0x551d40
Capabilities:
Encrypt data using speck
Resolve function by parsing pe exports

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x54
mov ebp, edx
mov dword [esp + 0x50], ebp
mov dword [esp + 0x3c], ecx
mov ebx, dword [esp + 0x8c]
mov eax, dword [esp + 0x74]
cmp eax, 0x16
mov ecx, dword [esp + 0x7c]
mov esi, dword [esp + 0x78]
je 0x551dc7
cmp eax, 0x17
je 0x551e2c
cmp eax, 0x18
jne 0x551f1b
mov ebp, ecx
mov eax, dword [esi + 4]
mov edi, dword [esi + 8]
lea ecx, [edi + edi*2]
mov dword [esp + 0x4c], ecx
lea ecx, [ecx*8 + 0x18]
mov dword [esp + 4], ecx
mov dword [esp], eax
call fcn.00492a60
test eax, eax
jne 0x552334
mov ecx, eax
and ecx, 1
xor ecx, eax
not ecx
test ecx, ecx
je 0x552334
mov dword [esp + 0x50], 0x70000003
mov eax, dword [esp + 0x50]
jmp 0x55266d
mov eax, dword [esi + 4]
mov ebp, dword [esi + 8]
lea ebx, [ebp + ebp*2]
lea ecx, [ebx*8 + 0x18]
mov dword [esp + 4], ecx
mov dword [esp], eax
call fcn.00492a60
mov edx, eax
test edx, edx
mov eax, 0x70000003
je 0x55266d
xor ecx, ecx
test cl, cl
jne 0x55266d
mov eax, 0x69bdce96
xor al, 0x95
movzx eax, al
cmp eax, 0x1a
je 0x5524e8
cmp eax, 0x53
je 0x552449
cmp eax, 0x22
jne 0x552578
mov esi, 8
jmp 0x5525ea
mov eax, dword [esi + 4]
mov ebx, dword [esi + 8]
lea ebp, [ebx + ebx*2]
lea ecx, [ebp*8 + 0x18]
mov dword [esp + 4], ecx
mov dword [esp], eax
call fcn.00492a60
mov edi, 0x70000003
test eax, eax
jne 0x551e60
mov ecx, eax
not ecx
and ecx, 1
add ecx, eax
jne 0x551f14
mov dword [esi + 4], eax
mov ecx, dword [esi + 8]
mov edx, 3
sub edx, ecx
xor edx, ecx
setne dl
movzx edx, dl
add edx, ecx
mov dword [esi + 8], edx
shl ebx, 3
lea ecx, [ebx + ebx*2]
mov edx, dword [esp + 0x7c]
mov dword [eax + ecx], edx
mov eax, dword [esi + 4]
mov edx, dword [esp + 0x84]
mov dword [eax + ecx + 4], edx
mov eax, dword [esi + 4]
mov dl, byte [esp + 0x80]
mov byte [eax + ecx + 8], dl
mov eax, dword [esi + 4]
mov dword [eax + ecx + 0xc], 0
mov eax, dword [esi + 4]
mov ebx, dword [esp + 0x8c]
mov dword [eax + ecx + 0x10], ebx
mov eax, dword [esi + 4]
mov dword [eax + ecx + 0x14], 0
mov dword [esp], ebx
call fcn.00492770
mov ecx, eax
test ecx, ecx
je 0x551f14
xor eax, eax
test al, al
jne 0x551f14
mov eax, ebx
imul eax, eax
and eax, 3
cmp eax, 3
sete al
movzx eax, al
cmp ebx, eax
je 0x551f0b
mov dword [esp + 8], ebx
mov eax, dword [esp + 0x88]
mov dword [esp + 4], eax
mov dword [esp], ecx
mov edi, ecx
call fcn.007c51d0
mov ecx, edi
mov eax, dword [esi + 4]
mov dword [eax + ebp*8 + 0x14], ecx
xor edi, edi
mov eax, edi
jmp 0x55266d
mov eax, dword [esp + 0x3c]
mov dword [esp], eax
call fcn.007ca940
mov dword [esp + 0x40], eax
xor ebx, ebx
test eax, eax
je 0x55232d
mov eax, 0x69bdce96
add al, 0x77
mov dword [esp + 0x2c], eax
movzx eax, al
mov ecx, 0x69bdce96
add eax, ecx
add al, 0xa5
mov dword [esp + 0x30], eax
mov dword [esp + 0x48], 0
xor ecx, ecx
xor ebx, ebx
jmp 0x551f90
mov edx, 0xb
mov eax, 0x15
mov ecx, dword [esp + 0x48]
inc ecx
xor ebx, ebx
cmp ecx, dword [esp + 0x40]
jae 0x5522c0
mov dword [esp + 0x48], ecx
mov ecx, dword [esp + 0x4c]
mov ebp, dword [esp + 0x50]
jmp 0x5522b0
mov dword [esp + 0x38], ecx
mov dword [esp + 4], ecx
mov eax, dword [esp + 0x3c]
mov dword [esp], eax
call fcn.00649280
mov esi, eax
test esi, esi
je 0x552040
mov dword [esp], esi
call fcn.007aee60
test eax, eax
je 0x552050
mov dword [esp], esi
mov edi, eax
mov dword [esp + 0x34], edi
call fcn.00649510
mov dword [esp + 0x44], eax
mov dword [esp], edi
mov dword [esp + 4], str.signature
call fcn.007c58b0
test eax, eax
je 0x552059
mov edi, dword [esp + 0x44]
mov eax, 0x15
mov edx, dword [esp + 0x30]
movzx ecx, dl
cmp ecx, 0x63
je 0x552170
mov dword [esp + 0x4c], esi
mov eax, dword [esp + 0x34]
mov dword [esp], eax
call fcn.007c3e70
mov esi, eax
mov eax, dword [esp + 0x68]
mov eax, dword [eax]
add eax, esi
mov ecx, dword [ebp]
mov dword [esp + 4], eax
mov dword [esp], ecx
call fcn.00492a60
mov ebx, 0x70000003
test eax, eax
je 0x55232d
mov ebx, ebp
mov cl, 0x63
mov dword [esp + 0x30], ecx
jmp 0x55207c
mov dword [esp + 0x4c], esi
jmp 0x551f60
mov dword [esp + 0x4c], esi
jmp 0x5522c9
mov dword [esp + 0x4c], esi
mov esi, ebp
mov ecx, 0x15
mov eax, 0x18
mov edx, dword [esp + 0x44]
test edx, edx
mov edi, edx
jne 0x55213c
jmp 0x55220c
mov edx, dword [esp + 0x34]
mov dword [ebx], eax
mov ebp, dword [esp + 0x68]
add eax, dword [ebp]
mov dword [esp + 8], esi
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.007c51d0
add dword [ebp], esi
test edi, edi
je 0x552135
mov dword [esp], edi
mov dword [esp + 0x44], edi
call fcn.007c3e70
mov dword [esp + 0x34], eax
mov edx, dword [ebp]
add edx, eax
mov ecx, dword [ebx]
mov dword [esp + 4], edx
mov dword [esp], ecx
call fcn.00492a60
mov ebp, eax
test ebp, ebp
mov edx, ebx
je 0x5521e5
mov dword [esp + 0x50], edx
mov esi, 0xffffffff
mov dword [esp + 0x38], eax
jmp 0x552122
mov dword [esp + 0x38], 0xe
mov eax, dword [esp + 0x50]
mov dword [eax], ebp
mov eax, dword [esp + 0x68]
mov ebx, eax
mov eax, dword [ebx]
add eax, ebp
mov edi, dword [esp + 0x34]
mov dword [esp + 8], edi
mov ecx, dword [esp + 0x44]
mov dword [esp + 4], ecx
mov dword [esp], eax
call fcn.007c51d0
add dword [ebx], edi
add esi, 1
mov ebx, 0x70000003
jb 0x5520f0
mov edx, dword [esp + 0x38]
jmp 0x5522c0
mov esi, ebx
mov ecx, 0xa
cmp ecx, 0xa
jne 0x552148
mov ebp, esi
jmp 0x5522c9
mov eax, dword [esp + 0x2c]
movzx ecx, al
cmp ecx, 0xd
je 0x55221c
mov eax, 0xd
cmp ecx, 0x71
mov ebp, esi
jne 0x552256
mov edx, dword [esp + 0x30]
mov esi, dword [esp + 0x4c]
mov dword [esp + 0x4c], esi
cmp eax, 0xd
jne 0x5521af
mov dword [esp + 0x30], edx
mov dword [esp], edi
call fcn.007c3e70
mov ecx, dword [esp + 0x70]
mov dword [ecx], eax
mov dword [esp + 4], eax
mov dword [esp], 1
call fcn.00493840
mov ecx, dword [esp + 0x6c]
mov dword [ecx], eax
mov ebx, 0x70000003
test eax, eax
mov cl, 0xd
jmp 0x552283
mov eax, dword [esp + 0x34]
mov dword [esp], eax
call fcn.007c3e70
mov esi, eax
mov eax, dword [esp + 0x68]
mov eax, dword [eax]
add eax, esi
mov ecx, dword [ebp]
mov dword [esp + 4], eax
mov dword [esp], ecx
call fcn.00492a60
test eax, eax
je 0x5521fa
mov cl, 0x48
mov dword [esp + 0x30], ecx
mov ebx, ebp
jmp 0x55207c
mov eax, 0xa
mov ebx, 0x70000003
mov ecx, dword [esp + 0x38]
mov ebp, edx
jmp 0x5522b0
mov al, 0x48
mov dword [esp + 0x30], eax
mov esi, ebp
mov eax, 0xc
mov ebx, 0x70000003
cmp eax, 0xc
mov ebp, esi
jne 0x5522c9
jmp 0x55232d
mov dword [esp], edi
call fcn.007c3e70
mov ecx, dword [esp + 0x70]
mov dword [ecx], eax
mov dword [esp + 4], eax
mov dword [esp], 1
call fcn.00493840
mov ecx, dword [esp + 0x6c]
mov dword [ecx], eax
mov ebx, 0x70000003
test eax, eax
mov cl, 0x71
mov dword [esp + 0x2c], ecx
mov ebp, esi
jne 0x55228d
jmp 0x55232d
mov dword [esp], edi
call fcn.007c3e70
mov ecx, dword [esp + 0x70]
mov dword [ecx], eax
mov dword [esp + 4], eax
mov dword [esp], 1
call fcn.00493840
mov ecx, dword [esp + 0x6c]
mov dword [ecx], eax
mov ebx, 0x70000003
test eax, eax
mov cl, 0x63
mov dword [esp + 0x2c], ecx
je 0x55232d
mov ecx, dword [esp + 0x70]
mov ecx, dword [ecx]
mov dword [esp + 8], ecx
mov dword [esp + 4], edi
mov dword [esp], eax
call fcn.007c51d0
jmp 0x5522c9
cmp eax, 0xa
jne 0x551f90
jmp 0x55232d
cmp edx, 0xb
mov ebp, dword [esp + 0x50]
je 0x55232d
mov eax, dword [esp + 0x70]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x6c]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x68]
mov dword [esp], eax
mov dword [esp + 0x24], 0
mov dword [esp + 0x20], 0
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0x15
mov ecx, dword [esp + 0x4c]
mov edx, ebp
call fcn.00551d40
mov ebx, eax
test ebx, ebx
je 0x551f60
mov eax, ebx
jmp 0x55266d
mov dword [esp + 0x50], 0x70000003
mov dword [esi + 4], eax
mov ecx, dword [esi + 8]
mov edx, ecx
not edx
and edx, 1
add edx, ecx
setne dl
movzx edx, dl
add edx, ecx
mov dword [esi + 8], edx
shl edi, 3
lea ecx, [edi + edi*2]
mov dword [eax + ecx], ebp
mov eax, dword [esi + 4]
mov edx, dword [esp + 0x84]
mov dword [eax + ecx + 4], edx
mov eax, dword [esi + 4]
mov dl, byte [esp + 0x80]
mov byte [eax + ecx + 8], dl
mov eax, dword [esi + 4]
mov dword [eax + ecx + 0xc], 0
mov eax, dword [esi + 4]
mov dword [eax + ecx + 0x10], ebx
mov eax, dword [esi + 4]
mov dword [eax + ecx + 0x14], 0
mov dword [esp], ebx
mov esi, ebx
call fcn.00492770
mov ecx, 9
mov edi, eax
test edi, edi
je 0x552418
mov ebp, 0xf
jmp 0x552411
mov ecx, 0x14
xor ebx, ebx
test esi, esi
jne 0x5523fd
jmp 0x552418
mov ebp, 0x1d
mov eax, ebx
not eax
and eax, 1
add eax, ebx
setne al
movzx eax, al
add ebx, eax
mov dword [esp + 8], esi
mov eax, dword [esp + 0x88]
mov dword [esp + 4], eax
mov dword [esp], edi
call fcn.007c51d0
mov eax, ebx
and eax, 1
xor eax, ebx
cmp eax, 0xffffffff
setne al
movzx eax, al
cmp ebx, eax
jb 0x5523d0
cmp ebp, 0xf
je 0x5523c0
jmp 0x552429
cmp ecx, 9
jne 0x552429
mov eax, ecx
or eax, 2
xor ecx, 2
add ecx, eax
jne 0x552440
mov eax, dword [esp + 0x78]
mov eax, dword [eax + 4]
mov ecx, dword [esp + 0x4c]
mov dword [eax + ecx*8 + 0x14], edi
mov dword [esp + 0x50], 0
mov eax, dword [esp + 0x50]
jmp 0x55266d
mov dword [esi + 4], edx
mov eax, dword [esi + 8]
mov ecx, eax
or ecx, 2
mov edi, edx
mov edx, eax
xor edx, 2
add edx, ecx
setne cl
movzx ecx, cl
add ecx, eax
mov dword [esi + 8], ecx
shl ebp, 3
lea eax, [ebp + ebp*2]
mov ecx, dword [esp + 0x7c]
mov dword [edi + eax], ecx
mov ecx, dword [esi + 4]
mov edx, dword [esp + 0x84]
mov dword [ecx + eax + 4], edx
mov ecx, dword [esi + 4]
mov dl, byte [esp + 0x80]
mov byte [ecx + eax + 8], dl
mov ecx, dword [esi + 4]
mov dword [ecx + eax + 0xc], 0
mov ecx, dword [esi + 4]
mov edi, dword [esp + 0x8c]
mov dword [ecx + eax + 0x10], edi
mov ecx, dword [esi + 4]
mov dword [ecx + eax + 0x14], 0
mov ebp, 8
mov dword [esp], edi
call fcn.00492770
mov edi, eax
mov eax, 0x70000003
test edi, edi
jne 0x5526f2
mov ecx, edi
imul ecx, ecx
and ecx, 3
cmp ecx, 2
jb 0x55266d
jmp 0x5526f2
mov dword [esi + 4], edx
inc dword [esi + 8]
lea eax, [ebp*8]
lea eax, [eax + eax*2]
mov ecx, dword [esp + 0x7c]
mov dword [edx + eax], ecx
mov dword [esp + 0x50], edx
mov ecx, dword [esi + 4]
mov edx, dword [esp + 0x84]
mov dword [ecx + eax + 4], edx
mov ecx, dword [esi + 4]
mov dl, byte [esp + 0x80]
mov byte [ecx + eax + 8], dl
mov ecx, dword [esi + 4]
mov dword [ecx + eax + 0xc], 0
mov ecx, dword [esi + 4]
mov edi, dword [esp + 0x8c]
mov dword [ecx + eax + 0x10], edi
mov ecx, dword [esi + 4]
mov edx, edi
mov dword [ecx + eax + 0x14], 0
mov esi, 0xc
mov dword [esp], edx
call fcn.00492770
mov edi, eax
test edi, edi
jne 0x5525e6
mov eax, edi
imul eax, eax
and eax, 3
cmp eax, 2
mov eax, 0x70000003
mov edx, dword [esp + 0x50]
jb 0x55266d
jmp 0x5525ea
mov dword [esi + 4], edx
mov eax, dword [esi + 8]
mov ecx, eax
and ecx, 1
xor ecx, eax
cmp ecx, 0xffffffff
setne cl
movzx ecx, cl
add ecx, eax
mov dword [esi + 8], ecx
shl ebp, 3
lea eax, [ebp + ebp*2]
mov ecx, dword [esp + 0x7c]
mov dword [edx + eax], ecx
mov ecx, dword [esi + 4]
mov edx, dword [esp + 0x84]
mov dword [ecx + eax + 4], edx
mov ecx, dword [esi + 4]
mov dl, byte [esp + 0x80]
mov byte [ecx + eax + 8], dl
mov ecx, dword [esi + 4]
mov dword [ecx + eax + 0xc], 0
mov ecx, dword [esi + 4]
mov edi, dword [esp + 0x8c]
mov dword [ecx + eax + 0x10], edi
mov ecx, dword [esi + 4]
mov dword [ecx + eax + 0x14], 0
mov dword [esp], edi
jmp 0x552650
mov edx, dword [esp + 0x50]
cmp esi, 8
mov esi, dword [esp + 0x78]
je 0x5525f9
xor eax, eax
test al, al
je 0x552675
mov dword [esi + 4], edx
inc dword [esi + 8]
shl ebp, 3
lea eax, [ebp + ebp*2]
mov ecx, dword [esp + 0x7c]
mov dword [edx + eax], ecx
mov ecx, dword [esi + 4]
mov edx, dword [esp + 0x84]
mov dword [ecx + eax + 4], edx
mov ecx, dword [esi + 4]
mov dl, byte [esp + 0x80]
mov byte [ecx + eax + 8], dl
mov ecx, dword [esi + 4]
mov dword [ecx + eax + 0xc], 0
mov ecx, dword [esi + 4]
mov edx, dword [esp + 0x8c]
mov dword [ecx + eax + 0x10], edx
mov ecx, dword [esi + 4]
mov dword [ecx + eax + 0x14], 0
mov dword [esp], edx
call fcn.00492770
mov edi, eax
test edi, edi
jne 0x552675
mov eax, edi
imul eax, eax
and eax, 3
cmp eax, 2
mov eax, 0x70000003
jae 0x552675
add esp, 0x54
pop esi
pop edi
pop ebx
pop ebp
ret
cmp dword [esp + 0x8c], 0
mov eax, 0
je 0x5526da
xor eax, eax
test al, al
mov eax, 0
jne 0x5526da
mov eax, dword [esp + 0x8c]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x88]
mov dword [esp + 4], eax
mov dword [esp], edi
call fcn.007c51d0
xor eax, eax
jmp 0x5526da
mov ebp, 0x10
mov ecx, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 2
adc eax, 0
mov ecx, dword [esi + 4]
mov dword [ecx + ebx*8 + 0x14], edi
mov ecx, eax
or ecx, 2
mov edx, eax
xor edx, 2
add edx, ecx
setne cl
movzx ecx, cl
cmp eax, ecx
jb 0x5526c0
xor eax, eax
cmp ebp, 8
jne 0x55266d
mov ecx, ebp
and ecx, 1
xor ecx, ebp
not ecx
test ecx, ecx
je 0x55266d
jmp 0x552675