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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x1c8
mov ecx, dword [ebp + 0x14]
mov edx, dword [ebp + 0xc]
mov edi, dword [ebp + 8]
mov eax, 0x80000000
mov ecx, dword [ecx]
mov bl, byte [edx + 0xfc]
xor ecx, eax
cmp ecx, 3
ja 0x4493b5
cmp ecx, 1
jne 0x4493c8
mov ecx, dword [ebp + 0x14]
xor eax, dword [ecx + 0xc]
lea esi, [ecx + 0xc]
cmp eax, 0x14
ja 0x449408
cmp eax, 1
je 0x449408
mov edx, dword [ebp + 0x14]
xor eax, eax
lea esi, [esp + 0x90]
inc eax
mov ecx, esi
push eax
push 0x481fe8
push eax
push 0x481eb9
call fcn.00444bed
add esp, 0x10
mov al, byte [esi]
movzx ecx, word [esi + 1]
mov dl, byte [esi + 3]
mov esi, dword [esi + 4]
cmp al, 0x14
mov word [esp + 0x30], cx
mov byte [esp + 0x32], dl
jne 0x4494c7
mov eax, dword [esi + 0x14]
mov edx, dword [ebp + 0x10]
mov ecx, dword [esi + 0x10]
add eax, eax
test eax, eax
je 0x4494fe
add eax, 0xfffffffe
cmp byte [ecx], 0
lea ecx, [ecx + 2]
jne 0x449413
mov edi, esi
lea esi, [esp + 0x1b0]
mov byte [esp + 0xb], bl
mov ecx, esi
call fcn.00430e69
mov eax, dword [esi + 8]
mov ecx, dword [esi + 0xc]
mov edx, dword [esi]
mov esi, dword [esi + 4]
movsd xmm0, qword [0x4846c8]
movsd xmm1, qword [0x4846c0]
lea ebx, [esp + 0x90]
movsd qword [ebx + 8], xmm0
movsd qword [ebx], xmm1
mov dword [ebx + 0x14], esi
mov dword [ebx + 0x10], edx
mov dword [ebx + 0x18], eax
mov eax, edi
mov dword [ebx + 0x1c], ecx
mov dword [esp + 0x40], eax
mov edi, dword [edi + 0x1c]
imul eax, dword [eax + 0x20], 0x1c
test eax, eax
je 0x449514
mov ecx, edi
mov dword [esp + 4], eax
call fcn.0042e620
mov ecx, eax
call fcn.00433168
mov esi, eax
lea ebx, [esp + 0x90]
mov ecx, ebx
mov edx, esi
call fcn.004312e0
test al, al
jne 0x4496bd
mov ecx, ebx
mov edx, esi
add edi, 0x1c
call fcn.00431850
mov eax, dword [esp + 4]
add eax, 0xffffffe4
jmp 0x44947e
mov ah, byte [esp + 0x32]
mov ebx, esi
movzx esi, word [esp + 0x30]
mov ecx, dword [esp + 0x9c]
mov edx, dword [esp + 0x98]
mov byte [esp + 0x23], ah
mov word [esp + 0x21], si
mov byte [esp + 0x20], al
mov dword [esp + 0x24], ebx
mov dword [esp + 0x28], edx
mov dword [esp + 0x2c], ecx
jmp 0x4496e7
mov edx, dword [edx]
lea ecx, [esp + 0x20]
push 8
push 0xd
call fcn.0043e41d
pop eax
pop ecx
jmp 0x4496e7
lea edi, [esp + 0x90]
mov ecx, dword [edi]
mov edx, dword [edi + 4]
call fcn.00430de4
mov esi, dword [ebp + 0x10]
mov ecx, edi
mov edx, dword [esi]
mov dword [esp + 0x3c], edx
call fcn.00444e28
mov al, byte [edi]
mov ebx, dword [ebp + 0x14]
cmp al, 0x14
jne 0x44972b
mov eax, dword [esp + 0x40]
mov ecx, dword [eax + 0x1c]
mov edx, dword [eax + 0x20]
call fcn.004385f0
test eax, eax
je 0x449752
lea esi, [esp + 0x1a0]
mov dword [esp + 0x18], eax
mov edi, edx
mov ecx, esi
call fcn.00430e69
mov eax, dword [esi + 8]
movsd xmm0, qword [0x4846c0]
movsd xmm1, qword [0x4846c8]
mov dword [esp + 4], eax
lea eax, [esp + 0xa0]
mov edx, dword [esi]
mov ecx, dword [esi + 0xc]
mov esi, dword [esi + 4]
movsd qword [eax - 0x10], xmm0
movsd qword [eax - 8], xmm1
mov dword [esp + 0xc], edi
mov dword [eax], edx
mov edx, dword [esp + 4]
mov dword [eax + 4], esi
mov dword [eax + 0xc], ecx
mov dword [eax + 8], edx
imul eax, edi, 0x14
mov edi, dword [esp + 0x18]
test eax, eax
je 0x449782
mov dword [esp + 4], eax
cmp byte [edi + 0x10], 0
movzx eax, byte [edi + 0x11]
mov ecx, 0
mov edx, dword [esp + 0xa4]
cmove eax, ecx
mov ecx, dword [esp + 0xa0]
mov byte [esp + 0x10], al
push eax
push dword [esp + 0xb0]
push dword [esp + 0xb0]
call fcn.0042f72a
add esp, 0xc
cmp dword [esp + 0x98], 0
mov ebx, eax
mov esi, edx
lea eax, [esp + 0x10]
mov dword [esp + 0x68], eax
je 0x4496a5
mov ecx, dword [esp + 0x90]
mov edx, dword [esp + 0x94]
lea eax, [esp + 0x68]
mov dword [esp + 0x30], eax
lea eax, [esp + 0x90]
mov dword [esp + 0x34], eax
push 0x431714
lea eax, [esp + 0x34]
push eax
push esi
push ebx
call fcn.004315f5
add esp, 0x10
mov ecx, dword [esp + 0x90]
test eax, eax
je 0x44982f
movzx esi, byte [ecx + edx]
shr ebx, 0x19
mov al, byte [esp + 0x10]
add edi, 0x14
and esi, 1
sub dword [esp + 0x98], esi
lea esi, [edx - 0x10]
and esi, dword [esp + 0x94]
mov byte [ecx + edx], bl
not edx
mov byte [ecx + esi + 0x10], bl
inc dword [esp + 0x9c]
mov ebx, dword [ebp + 0x14]
mov ecx, dword [esp + 0x90]
mov byte [edx + ecx], al
mov eax, dword [esp + 4]
add eax, 0xffffffec
jmp 0x4495b7
lea ecx, [esp + 0x90]
lea edx, [esp + 0xa0]
call fcn.0047aa22
jmp 0x449616
mov ecx, dword [esp + 0x90]
mov edx, dword [esp + 0x94]
call fcn.00430de4
mov eax, dword [ebp + 0x10]
lea ecx, [esp + 0x20]
mov edx, dword [eax]
push 3
push 0x10
call fcn.0043e3c1
pop eax
pop ecx
mov edi, dword [ebp + 8]
mov ebx, dword [ebp + 0x14]
mov ecx, dword [esp + 0x2c]
movsd xmm0, qword [esp + 0x24]
mov eax, dword [esp + 0x20]
mov dword [esp + 0x88], ecx
mov dword [edi + 0xc], ecx
mov ecx, ebx
movsd qword [edi + 4], xmm0
movsd qword [esp + 0x80], xmm0
mov dword [edi], eax
call fcn.0043d7f2
mov ecx, dword [ebp + 0xc]
call fcn.0044cd1e
mov eax, edi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
movsd xmm1, qword [esp + 0x98]
movsd xmm0, qword [esp + 0x91]
mov edi, dword [ebp + 8]
movsd qword [esp + 0x28], xmm1
movsd qword [esp + 0x21], xmm0
mov byte [esp + 0x20], al
jmp 0x4496ea
mov edi, 0x80000000
mov dword [esp + 0x48], 0x80000000
mov ecx, dword [esi + 4]
lea edx, [esp + 0x48]
add ecx, 0x24
call fcn.0044cd94
test al, al
jne 0x449c1e
mov word [esp + 0x20], 0x3708
jmp 0x449d33
mov ecx, dword [esp + 0x90]
mov edx, dword [esp + 0x94]
call fcn.00430e59
mov edx, dword [esp + 0x18]
imul eax, dword [esp + 0xc], 0x14
mov edi, dword [ebp + 8]
add edx, 0xffffffec
test eax, eax
je 0x44984a
add eax, 0xffffffec
cmp dword [edx + 0x14], 0
lea ecx, [edx + 0x14]
mov edx, ecx
jne 0x4497a4
mov edx, dword [ecx + 0xc]
mov esi, dword [ecx + 8]
lea edi, [esp + 0x90]
mov ecx, edi
mov dword [esp + 0x14], edx
call fcn.004053c0
mov eax, dword [edi + 4]
add eax, dword [edi + 8]
xor edi, edi
push 0xfffffffffffffffe
pop edx
mov dword [esp + 4], esi
mov dword [esp + 0x58], edi
add edi, 8
cmp edi, dword [esp + 0x14]
ja 0x449862
xor ebx, ebx
mov ecx, edx
test ecx, ecx
je 0x4497fd
or ebx, dword [esi + ecx*4 + 8]
inc ecx
jmp 0x4497f2
test ebx, 0x80808080
jne 0x449862
push 0xfffffffffffffff8
pop ebx
test ebx, ebx
je 0x449827
mov cl, byte [esi + ebx + 8]
mov ch, cl
add ch, 0xbf
cmp ch, 0x1a
setb ch
shl ch, 5
or ch, cl
mov byte [eax + ebx + 8], ch
inc ebx
jmp 0x449808
add esi, 8
add eax, 8
jmp 0x4497e1
mov edx, dword [esp + 0x94]
call fcn.00430e59
mov edx, dword [esp + 0x3c]
lea ecx, [esp + 0x20]
push 8
jmp 0x4496db
mov edx, dword [esp + 0x3c]
lea ecx, [esp + 0x20]
push 0x38
push 0xd
call fcn.0043e3c1
pop eax
pop ecx
jmp 0x4496ea
mov eax, dword [esp + 0x90]
mov ecx, dword [esp + 0x94]
lea edx, [esp + 0x68]
lea ebx, [esp + 0x90]
mov dword [edx + 4], ecx
mov dword [edx], eax
mov ecx, dword [esp + 0x58]
mov eax, dword [esp + 4]
lea esi, [eax + ecx]
mov dword [edx + 8], ecx
mov ecx, dword [esp + 0x14]
lea edi, [eax + ecx]
lea ecx, [esp + 0x30]
mov dword [ecx], esi
mov dword [ecx + 4], edi
and dword [ecx + 8], 0
mov dword [esp + 0x74], edi
lea ecx, [esp + 0x30]
call fcn.0040fd6b
cmp eax, 0x110000
je 0x449b9e
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x38]
add edi, edx
add esi, ecx
mov dword [esp + 0xc], ecx
sub edi, esi
mov esi, dword [esp + 0x30]
add edi, esi
cmp eax, 0x3a3
mov dword [esp + 0x44], esi
mov dword [esp + 0x38], edi
jne 0x4498fc
add edx, dword [esp + 0x58]
mov eax, dword [esp + 4]
je 0x449958
cmp edx, dword [esp + 0x14]
jae 0x449952
cmp byte [eax + edx], 0xbf
jg 0x449958
jmp 0x449d4e
cmp eax, 0x80
jae 0x44991a
mov ecx, eax
xor edx, edx
add cl, 0xbf
cmp cl, 0x1a
setb dl
shl edx, 5
or edx, eax
jmp 0x449b2c
xor ecx, ecx
mov edx, 0x57f
mov esi, 0x57f
cmp ecx, edx
jae 0x449a49
shr esi, 1
add esi, ecx
mov edi, dword [esi*8 + 0x47e424]
cmp edi, eax
je 0x449a64
cmp edi, eax
cmova edx, esi
lea esi, [esi + 1]
cmovb ecx, esi
mov esi, edx
sub esi, ecx
jmp 0x449926
jne 0x449d4e
mov dword [esp + 0x78], edx
lea esi, [eax + edx]
xor edx, edx
mov edi, 0x3c3
cmp esi, eax
je 0x449a37
movzx ebx, byte [esi - 1]
test bl, bl
js 0x449979
dec esi
jmp 0x4499d1
movzx ecx, byte [esi - 2]
cmp cl, 0xc0
jge 0x4499a7
mov dword [esp + 0x18], edx
movzx edx, byte [esi - 3]
cmp dl, 0xc0
jge 0x4499af
movzx eax, byte [esi - 4]
and edx, 0x3f
add esi, 0xfffffffc
and eax, 7
shl eax, 6
or edx, eax
mov eax, dword [esp + 4]
jmp 0x4499b5
add esi, 0xfffffffe
and ecx, 0x1f
jmp 0x4499c1
add esi, 0xfffffffd
and edx, 0xf
shl edx, 6
and ecx, 0x3f
or ecx, edx
mov edx, dword [esp + 0x18]
shl ecx, 6
and ebx, 0x3f
or ebx, ecx
cmp ebx, 0x110000
je 0x449a37
test dl, dl
jne 0x4499ed
mov ecx, ebx
call fcn.0041e1bc
test al, al
mov eax, dword [esp + 4]
je 0x4499ed
mov ebx, 0x110000
xor edx, edx
jmp 0x4499ef
mov dl, 1
cmp ebx, 0x110000
je 0x449961
mov ecx, ebx
call fcn.0041e261
test al, al
lea ebx, [esp + 0x90]
je 0x449a3e
mov ecx, dword [esp + 0x78]
mov eax, dword [esp + 4]
add ecx, 2
je 0x449b48
cmp ecx, dword [esp + 0x14]
jae 0x449b42
cmp byte [eax + ecx], 0xbf
jg 0x449b48
jmp 0x449d4e
lea ebx, [esp + 0x90]
lea ecx, [esp + 0x68]
mov edx, edi
jmp 0x449b30
mov dword [esp + 0x5c], ecx
mov edx, ebx
lea esi, [esp + 0x10]
lea ecx, [esp + 0x64]
mov dword [esp + 0x60], 0x110000
jmp 0x449ae4
mov ecx, dword [esi*8 + 0x47e428]
mov edx, ecx
xor edx, 0xd800
add edx, 0xffef0000
cmp edx, 0xffef0800
mov edx, 0x110000
cmovb ecx, edx
mov edx, 0x48101c
cmp ecx, 0x110000
je 0x449aa6
and dword [esp + 0x94], 0
and dword [esp + 0x98], 0
mov edx, ebx
mov dword [esp + 0x90], ecx
lea edi, [esp + 0x10]
mov ecx, dword [edx]
mov esi, dword [edx + 4]
mov edx, dword [edx + 8]
mov dword [esp + 0x5c], esi
mov dword [esp + 0x60], ecx
cmp ecx, 0x110000
lea ecx, [esp + 0x7c]
lea esi, [esp + 0x64]
mov dword [esp + 0x7c], edx
lea edx, [esp + 0x60]
cmove ecx, esi
lea esi, [esp + 0x5c]
cmove edx, ebx
cmove esi, edi
and dword [esp + 0x10], 0
mov dword [esp + 0x90], eax
and dword [esp + 0x64], 0
mov esi, dword [esi]
mov edx, dword [edx]
test esi, esi
je 0x449b2c
mov ebx, dword [ecx]
lea edi, [esp + 0x68]
mov ecx, edi
call fcn.0041ab7d
mov ecx, edi
mov edx, esi
call fcn.0041ab7d
mov esi, dword [esp + 0x44]
mov edi, dword [esp + 0xc]
test ebx, ebx
mov edx, ebx
lea ebx, [esp + 0x90]
je 0x4498a6
lea ecx, [esp + 0x68]
call fcn.0041ab7d
mov esi, dword [esp + 0x44]
mov edi, dword [esp + 0xc]
jmp 0x4498a6
jne 0x449d4e
add ecx, eax
mov dword [esp + 0x90], ecx
mov ecx, dword [esp + 0x74]
mov dword [esp + 0x94], ecx
mov byte [esp + 0x98], 0
mov ecx, ebx
call fcn.0040fd6b
cmp eax, 0x110000
je 0x449b94
mov ecx, eax
mov esi, eax
call fcn.0041e1bc
test al, al
jne 0x449b64
mov ecx, esi
call fcn.0041e261
movzx edi, al
or edi, 0x3c2
jmp 0x449a3e
mov edi, 0x3c2
jmp 0x449a3e
movsd xmm0, qword [esp + 0x68]
mov eax, dword [esp + 0x70]
mov ebx, dword [ebp + 0x14]
movsd qword [esp + 0x48], xmm0
mov dword [esp + 0x50], eax
mov edi, dword [esp + 0x48]
cmp edi, 0x80000000
je 0x449d46
cmp byte [esp + 0xb], 0
mov esi, dword [ebp + 0x10]
jne 0x44975f
mov esi, dword [esi + 4]
cmp dword [esi + 0x24], 0x80000000
jne 0x449d4e
mov edx, dword [esp + 0x4c]
lea ebx, [esi + 0x24]
lea ecx, [esp + 0x90]
push dword [esp + 0x50]
call fcn.0041b116
pop eax
mov ecx, dword [esi + 0x24]
mov edx, dword [esi + 0x28]
call fcn.00403919
lea ecx, [esp + 0x90]
mov eax, dword [ecx + 8]
mov dword [ebx + 8], eax
movsd xmm0, qword [ecx]
movsd qword [ebx], xmm0
mov ebx, dword [ebp + 0x14]
mov eax, dword [esp + 0x40]
mov ecx, dword [eax + 0x1c]
mov edx, dword [eax + 0x20]
push 0xd
call fcn.004385c2
pop ecx
test eax, eax
je 0x449c41
cmp dword [eax], 2
jne 0x449c41
mov edx, dword [eax + 8]
add eax, 0xc
jmp 0x449c6d
mov edx, dword [esp + 0x3c]
lea esi, [esp + 0x90]
mov ecx, esi
push 0xc
push 6
call fcn.0043e41d
pop eax
pop ecx
mov al, byte [esi]
cmp al, 0x14
jne 0x449cf6
lea eax, [esp + 0x98]
mov edx, dword [eax - 4]
lea esi, [esp + 0x24]
mov ecx, esi
push dword [eax]
call fcn.0042e1eb
pop eax
mov eax, dword [esp + 0x40]
mov edx, dword [esp + 0x4c]
mov ecx, edi
mov dword [esi - 4], eax
call fcn.00403919
mov edi, dword [esi - 4]
mov eax, dword [esi + 8]
movsd xmm0, qword [esi]
lea esi, [esp + 0x190]
mov dword [esp + 0x88], eax
movsd qword [esi], xmm0
mov dword [esi + 8], eax
push 0x100
mov ebx, dword [ebp + 0xc]
push ebx
lea ebx, [esp + 0x98]
push ebx
call fcn.0046e6e0
add esp, 0xc
mov eax, dword [ebp + 0x10]
mov ecx, dword [ebp + 8]
mov edx, ebx
push dword [eax + 4]
push dword [eax]
mov ebx, dword [ebp + 0x14]
push ebx
push edi
mov edi, ecx
push esi
call fcn.00449d50
add esp, 0x14
mov ecx, ebx
call fcn.0043d7f2
mov ecx, dword [ebp + 0xc]
call fcn.0044cd15
jmp 0x449721
mov cl, byte [esp + 0x93]
mov edx, dword [esp + 0x98]
mov esi, dword [esp + 0x9c]
mov byte [esp + 0x23], cl
movzx ecx, word [esp + 0x91]
mov word [esp + 0x21], cx
mov ecx, dword [esp + 0x94]
mov byte [esp + 0x20], al
mov dword [esp + 0x24], ecx
mov dword [esp + 0x28], edx
mov dword [esp + 0x2c], esi
mov edx, dword [esp + 0x4c]
mov ecx, edi
call fcn.00403919
mov edi, dword [ebp + 8]
jmp 0x4496ea
mov esi, dword [ebp + 0x10]
jmp 0x44975f
ud2