Function at 0x404470
Capabilities:
Encode data using xor
Encrypt data using speck

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xa4
mov eax, dword [ebp + 0x24]
mov dl, byte [ebp + 0x18]
push ebx
mov ebx, dword [ebp + 0x1c]
push esi
push edi
mov dword [esp + 0x20], 0x3fff
cmp eax, 0xffc3d44f
je 0x4044aa
cmp eax, 0xffc3d44e
je 0x4044aa
mov byte [esp + 0xd], 0
cmp eax, 0xffc3d44d
jne 0x4044af
mov byte [esp + 0xd], 1
mov ecx, dword [0x4a14b4]
test ecx, ecx
jne 0x4044c6
lea edi, [esp + 0x40]
mov dword [esp + 0x1c], edi
jmp 0x40456d
mov eax, dword [0x4a14b8]
mov edi, eax
imul edi, edi, 0x70
inc eax
add edi, ecx
mov dword [esp + 0x1c], edi
mov dword [0x4a14b8], eax
cmp eax, dword [0x49d32c]
jl 0x4044ee
mov dword [0x4a14b8], 0
mov al, byte [ebp + 0x18]
mov cl, byte [ebp + 0x20]
mov byte [edi], al
mov byte [edi + 5], cl
call dword [0x48d2e4]
mov edx, eax
sub edx, dword [0x4a32fc]
mov dword [0x4a14bc], eax
mov dword [esp + 0x34], edx
fild dword [esp + 0x34]
jns 0x40451c
fadd dword [0x497be0]
fdiv qword [0x497bd8]
mov dword [0x4a32fc], eax
fstp dword [edi + 8]
call dword [0x48d604]
mov esi, eax
test esi, esi
je 0x40455d
cmp esi, dword [0x4a14c0]
je 0x404557
mov ecx, dword [0x4a0a38]
push esi
lea eax, [edi + 0xc]
push eax
push 0x418
push ecx
call dword [0x48d570]
jmp 0x404564
mov byte [edi + 0xc], 0
jmp 0x404564
mov dword [edi + 0xc], 0x412f4e
mov dl, byte [ebp + 0x18]
mov dword [0x4a14c0], esi
cmp dl, 0xe7
jne 0x40458a
mov edx, dword [ebp + 0x14]
mov ax, word [edx + 4]
mov word [edi + 2], ax
mov byte [edi + 4], 0x55
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
lea ecx, [edx + 0x64]
mov word [edi + 2], bx
cmp cl, 3
ja 0x40459b
xor ebx, ebx
mov dword [ebp + 0x1c], ebx
mov eax, dword [ebp + 8]
cmp eax, dword [0x4a0b6c]
jne 0x4045cf
mov al, byte [ebp + 0x28]
and al, 1
mov byte [esp + 0xf], al
jne 0x4046ff
cmp byte [ebp + 0x20], 0
movzx edx, dl
setne cl
dec cl
and cl, 0x80
mov byte [edx + 0x4a0a58], cl
jmp 0x4046ff
mov eax, dword [ebp + 0x28]
shr eax, 4
and al, 1
mov byte [esp + 0xf], al
test ebx, 0x100
jne 0x4046bd
push 0x90
call dword [0x48d5ec]
test al, 1
je 0x4046bd
movzx eax, byte [ebp + 0x18]
add eax, 0xfffffff4
cmp eax, 0x62
ja 0x4046bd
movzx ecx, byte [eax + 0x405f94]
jmp dword [ecx*4 + 0x405f64]
movzx esi, byte [ebp + 0x18]
mov edx, dword [0x4a14d8]
lea ecx, [esi + esi*8]
shl ecx, 5
cmp byte [ecx + edx + 4], 0
jne 0x4046ff
test byte [ebp + 0x28], 0x10
jne 0x4046ff
mov eax, dword [ebp + 0x20]
push eax
mov al, byte [ebp + 0x18]
call fcn.004073a0
add esp, 4
test al, al
je 0x4046ff
cmp byte [ebp + 0x20], 0
setne cl
dec cl
and cl, 0x80
mov byte [esi + 0x4a0a58], cl
cmp byte [esp + 0xd], 0
je 0x40470a
mov al, 0x69
jmp 0x404716
mov al, byte [esp + 0xf]
neg al
sbb al, al
and al, 0x41
add al, 0x20
cmp byte [0x4a0b58], 0
mov byte [edi + 4], al
je 0x40475c
mov al, byte [ebp + 0x18]
cmp al, 0x5b
je 0x40472d
cmp al, 0x5c
jne 0x40475c
cmp byte [ebp + 0x20], 0
jne 0x40475c
mov edx, dword [ebp + 0x18]
push 0
push 0x7fffffff
push 0x3fff
push edi
push ebx
push edx
xor bl, bl
mov eax, dword [ebp + 8]
mov ecx, dword [ebp + 0x14]
call fcn.00406090
add esp, 0x18
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp byte [0x49f951], 0
je 0x404800
cmp byte [ebp + 0x18], 0x1b
jne 0x404800
cmp byte [ebp + 0x20], 0
jne 0x404800
push 0
push 0x491190
call dword [0x48d574]
test eax, eax
je 0x404800
push 0
push eax
call dword [0x48d600]
mov esi, eax
call dword [0x48d2b8]
cmp esi, eax
jne 0x404800
push 0xffc3d44d
push 0
push 0
push 0
push 0x1b
push 0
call fcn.0040e2a0
mov al, byte [0x4a0a35]
push 0xffc3d44d
shr al, 3
push 0
and al, 1
or al, 0xa4
push 0
movzx ecx, al
push 0
push ecx
push 1
call fcn.0040e2a0
mov ecx, dword [ebp + 0x14]
mov eax, dword [ebp + 8]
push 0
push 0x7fffffff
push 0x3fff
push edi
push ebx
push 0x1b
xor bl, bl
call fcn.00406090
add esp, 0x48
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
movzx eax, bx
lea edx, [eax + eax*8]
mov dword [esp + 0x30], eax
mov eax, dword [0x4a14dc]
shl edx, 5
mov cl, byte [eax + edx + 0x12]
add eax, edx
mov edx, dword [0x4a0b68]
mov byte [esp + 0x27], cl
cmp dword [ebp + 8], edx
jne 0x404832
test cl, cl
je 0x404832
mov cl, byte [ebp + 0x18]
mov esi, eax
jmp 0x404844
mov cl, byte [ebp + 0x18]
movzx eax, cl
lea esi, [eax + eax*8]
shl esi, 5
add esi, dword [0x4a14d8]
cmp byte [esp + 0xd], 0
mov dword [esp + 0x18], esi
je 0x404889
cmp dword [ebp + 0x24], 0xffc3d44e
jne 0x404878
cmp byte [ebp + 0x20], 0
je 0x404878
cmp dword [0x49f94c], esi
jne 0x404878
mov byte [esi + 0xc], 0
mov byte [esi + 0xf], 0
mov dword [0x49f94c], 0
mov ecx, dword [ebp + 0x20]
push 0
push 0x3fff
push edi
push ecx
jmp 0x405f3f
cmp byte [ebp + 0x20], 0
jne 0x40489c
mov eax, 0x3fff
mov byte [esi + 0x10], 0
mov word [esi + 6], ax
cmp dword [ebp + 8], edx
jne 0x404956
cmp byte [ebp + 0x20], 0
je 0x4049c5
cmp byte [0x49f955], 0
je 0x4048bd
cmp cl, 0x5b
je 0x4048ef
cmp byte [0x49f954], 0
je 0x4048cb
cmp cl, 0x5c
je 0x4048ef
cmp byte [0x49f953], 0
je 0x4048d9
cmp cl, 0xa4
je 0x4048ef
cmp byte [0x49f952], 0
je 0x4049c5
cmp cl, 0xa5
jne 0x4049c5
movzx eax, cl
add eax, 0xffffffa5
cmp eax, 0x4a
ja 0x40492a
movzx ecx, byte [eax + 0x40600c]
jmp dword [ecx*4 + 0x405ff8]
test byte [0x4a0a35], 3
jne 0x4049c5
movzx edx, byte [0x49d2f9]
push 0xffc3d44d
push 0
push 0
push 0
push edx
push 2
call fcn.0040e2a0
add esp, 0x18
jmp 0x4049c5
test cl, cl
jne 0x404988
mov eax, dword [ebp + 0x20]
mov ecx, dword [ebp + 0x10]
mov edx, dword [ebp + 0xc]
push 0
push 0x3fff
push edi
push eax
mov eax, dword [ebp + 8]
push 0
push ecx
mov ecx, dword [ebp + 0x14]
push edx
push eax
mov eax, ebx
call fcn.00406180
add esp, 0x20
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp cl, 1
je 0x404992
cmp cl, 2
jne 0x4049c5
cmp dword [0x4a0bb0], 0
jne 0x405f27
push 0
push 0x491198
call dword [0x48d574]
test eax, eax
je 0x4049c5
push 0
push eax
call dword [0x48d600]
cmp eax, dword [0x4a2bbc]
je 0x405f27
mov ecx, dword [0x49f94c]
test ecx, ecx
je 0x4049fd
cmp ecx, esi
je 0x4049fd
mov dl, byte [ebp + 0x20]
test dl, dl
jne 0x404a00
mov eax, dword [ebp + 8]
cmp eax, dword [0x4a0b68]
jne 0x4049ef
xor eax, eax
cmp byte [esi + 4], al
sete al
jmp 0x4049f3
movzx eax, byte [ecx + 4]
test eax, eax
je 0x404a00
mov byte [ecx + 0x11], 1
jmp 0x404a00
mov dl, byte [ebp + 0x20]
cmp byte [esi + 8], 0
jne 0x404a10
cmp byte [esi + 9], 0
je 0x404878
mov byte [esp + 0x2b], 0
mov dword [esp + 0x10], 0x3fff
mov dword [esp + 0x3c], 0
test dl, dl
je 0x404a58
mov al, byte [esi + 0xc]
mov cl, byte [esi + 0xf]
mov byte [esp + 0x17], al
movzx eax, word [esi + 6]
mov byte [esp + 0x15], cl
mov ecx, 0x3fff
mov byte [esi + 0xf], 0
cmp ax, cx
je 0x404a56
mov dword [esp + 0x10], eax
mov byte [esp + 0x2b], 1
mov word [esi + 6], cx
test dl, dl
sete al
mov byte [esi + 0xc], al
mov eax, dword [0x4a0b68]
mov byte [esp + 0xd], 0
cmp dword [ebp + 8], eax
jne 0x404ae8
cmp byte [esi + 4], 0
je 0x404b08
mov ecx, dword [0x4a14d8]
cmp byte [ecx + 0xb64c], 0
jne 0x404a93
cmp byte [ecx + 0xb76c], 0
jne 0x404a93
xor eax, eax
jmp 0x404a98
mov eax, 1
cmp byte [ecx + 0xb88c], 0
mov byte [ecx + 0x132c], al
jne 0x404ab4
cmp byte [ecx + 0xb9ac], 0
jne 0x404ab4
xor eax, eax
jmp 0x404ab9
mov eax, 1
cmp byte [ecx + 0xb40c], 0
mov byte [ecx + 0x144c], al
jne 0x404adb
cmp byte [ecx + 0xb52c], 0
jne 0x404adb
xor eax, eax
mov byte [ecx + 0x120c], al
jmp 0x404b0e
mov eax, 1
mov byte [ecx + 0x120c], al
jmp 0x404b0e
test eax, eax
jne 0x404b08
push 1
call fcn.00410850
mov dl, byte [ebp + 0x20]
add esp, 4
mov byte [0x4a0a36], al
mov byte [0x4a0a35], al
mov byte [esp + 0xd], 1
mov ecx, dword [0x4a14d8]
mov eax, dword [esi]
test eax, eax
je 0x404b1e
cmp dword [eax], 7
mov byte [esp + 0xf], 1
je 0x404b23
mov byte [esp + 0xf], 0
mov al, byte [esi + 8]
test al, al
je 0x404cc1
test dl, dl
jne 0x404cc1
mov edx, dword [0x49f94c]
test edx, edx
je 0x404b4e
cmp byte [esi + 9], 0
je 0x404b4e
cmp esi, edx
jne 0x404cc1
cmp al, 1
jne 0x404b7a
cmp byte [esp + 0x27], 0
mov eax, dword [esp + 0x30]
jne 0x404b61
movzx eax, byte [ebp + 0x18]
mov ecx, dword [esp + 0x27]
push ecx
push eax
call fcn.00409590
add esp, 8
test al, al
je 0x404b7a
mov byte [esp + 0xe], 1
jmp 0x404b91
mov byte [esp + 0xe], 0
cmp esi, dword [0x49f94c]
je 0x404b91
mov dword [0x49f94c], esi
mov byte [esi + 0x11], 0
cmp byte [esi + 9], 0
je 0x404c41
cmp byte [esp + 0xd], 0
jne 0x404bb1
push 1
mov byte [esp + 0x11], 1
call fcn.00410850
add esp, 4
mov al, byte [esi + 4]
mov cl, byte [0x4a0a36]
test al, al
je 0x404bc2
not al
and cl, al
test cl, cl
jne 0x404bcc
cmp byte [esp + 0xe], cl
je 0x404c41
mov edx, dword [ebp + 8]
cmp edx, dword [0x4a0b68]
jne 0x404bf4
cmp byte [esp + 0x27], 0
je 0x404bf4
movzx eax, cl
mov ecx, dword [0x4a14d0]
shl eax, 8
add eax, dword [esp + 0x30]
movzx ecx, word [ecx + eax*2]
jmp 0x404c0a
movzx eax, byte [ebp + 0x18]
movzx edx, cl
mov ecx, dword [0x14a14cc]
fadd dword [edx + 0x1fd72368]
aaa
sbb byte [ecx - 0x3f], dl
mov word [ecx + edx], fs
int1
jmp 0x404c13
ror dword [esp + 0x2ebf111], 0xd2
inc eax
xor byte [edx + eax + 0x64], 0xa9
inc esi
push es
ret
stosd dword es:[edi], eax
dec ebp
xor al, 0x14
mov esi, 0x423f7f
cmp ah, dl
jne 0x404cb3
mov ah, byte [ebp + esi - 0x61]
add dword [eax + 0x6e804874], 0x57c60c0f
or byte [edi + 0xc04fe8c], ah
push ebx
pushal
jae 0x404cad
sub ecx, dword [ecx]
cmp eax, 0x957c08b3
scasb al, byte es:[edi]
add al, 0x74
pop ebx
xchg byte [ebp + edx*2 + 0x17], dl
stosd dword es:[edi], eax
inc ebp
sbb dword [edx], ebp
imul edi, edi, 0xfffffffb
cmpsb byte [esi], byte es:[edi]
jg 0x404ce9
out dx, eax
mov edi, 0xf756a800
push edx
jmp 0x3e4545
dec ebx
aam 0xc0
push es
xchg dword [eax + 0x5f], ecx
and byte [edi + 0x4d], bl
pop edi
dec ebp
push 0xc35ce5c3
mov eax, dword [ebp + 0x85a3658]
cmp byte [edi - 0x73], 0x41
xchg byte [ebp + 0x24], al
xchg esi, eax
sbb dh, byte [eax]
popal
add byte [ebp + 0x20], bh
add ah, byte [esi - 0x1d]
sbb dword [0x659c9e8], esi
add dword gs:[eax + 0x5120fc], esi
hlt
inc edx
sbb al, 0x80
jbe 0x404cf2
test byte [ebp + 0x3f], dh
sub cl, byte [esi + 0xb]
cli
dec esi
or edi, edx
mov byte [ebp + 0x1d], bl
cmp cl, cl
and byte [ebp - 0x80], dh
inc esi
dec ecx
imul eax, dword [edx], 0xffffffb3
adc dword [eax - 0x7f62d3e4], eax
push cs
inc esp
cmp al, byte [edi - 0x80]
or cl, byte [edx + 0x2a00fc3]
add dword [eax + 0x558b00], eax
sub eax, dword [ecx + 0x28]
sti
jg 0x404d1e
jmp dword [edi]
daa
loopne 0x404cff
jg 0x404cb4
add al, byte [edi + 0x5b]
sbb dword [ebx - 0x5c], 0x5c
jmp 0xfc2c0547
wait
inc ebp
and bl, ah
add al, 0x68
fld xword [ebx - 0x6c]
or byte [eax + ecx*8 + 0x57c5a48e], al
out 0x66, al
add eax, 0xc0c892c
push esp
sbb dword [edi], esi
sbb cl, byte [eax + 0x5d9b1427]
or byte [edx - 0x65], dl
push ebp
mov bl, byte [eax + 0x41]
mov ecx, dword [ebp - 0x70]
xor cl, byte [ebx]
loope 0x405f41
pop es
add al, byte [esi]
add byte [ebx + 0x5e5b00c4], dl
dec edi
mov esp, esp
sbb al, 0xf3
xchg esp, eax
jbe 0x405fbb
inc eax
push ecx
mov cl, 0x42
inc eax
add byte [ecx - 0x447fbeaa], bl
inc edx
ror byte [ecx - 0x66], 0xa2
inc eax
adc dword [edi - 0x1a], esp
add byte [ecx], dl
xchg edx, eax
inc edi
dec esp
add dword [ebp + 0x5a00c2ce], 0x6a02400a
outsb dx, byte [esi]
pushal
inc eax
sbb al, 0xc6
inc eax
sbb cl, byte [ebp - 0x7df7bfba]
sbb ecx, dword [ebx]
dec edx
or ecx, dword [edx]
pop edx
mov ebp, dword [ebx]
add ebx, dword [ebx]
sub ecx, dword [ebx]
sub ecx, dword [ebx]
and dword [ecx], ecx
pop es
or ecx, dword [ebx]
lgdt [edx]
or eax, dword [0x8271e15]
or ecx, dword [ebx]
or ecx, dword [0xb0b0a84]
or ecx, dword [ecx]
or dword [ebx], ecx
or ecx, dword [ebx + 0xb000b8b]
or ecx, dword [ebx]
sbb ebp, dword [ebx]
or ebp, dword [ebx]
or ecx, dword [edx]
cmp ecx, dword [edi]
add ebp, dword [ebx]
adc ecx, dword [ebx]
dec ebx
push ss
add eax, 0x226f0b2b
or ecx, dword [ebx]
or ebx, dword [ebx]
mov dword [ebx], ebp
pop es
jnp 0x405fec
dec edx
or ecx, dword [edx]
sbb ecx, dword [edi]
or eax, 0x883c909
add al, byte [0x268c8700]
add eax, 0x268c8700
add ecx, dword [ebx]
pop edi
or ebp, dword [ecx + 0x69109222]
rcl dword [eax], 0x15
imul eax, dword [eax], 0x400812
sub ch, byte [ecx + 0x4a]
add byte [eax], bh
or dword [eax], eax
inc eax
add dword [esp + ebp*4 + 4], ecx
add al, 4
add eax, 0x8044600
add dword [eax + eax*4 + 0x24], ecx
inc esp
inc esp
cmp al, 0xc5
xchg esi, eax
les edx, [ecx + eax]
add byte [esi + ecx], ah
xchg esp, eax
mov word [0x8c01424], es
inc eax
xor al, 0x25
add al, 0x24
or byte [ebp + 0x10], al
test byte [0x314e584], cl
adc eax, 0xc004406
add eax, 0x20244404
pop es
inc esp
push es
test byte [esp], bh
add al, 4
and al, 5
add al, 0x14
add al, 7
add cl, byte [ecx]
or ch, al
inc ebp
shl byte [esi], 0x85
jno 0x406020
add al, 0x7c
push ecx
inc edx
add dword [ebp + 0x51], edi
popal
add byte [ecx - 0x7effdc79], cl
shl edx, 1
sar cl, 0x59
inc esp
add eax, 0x64409a07
sbb ecx, dword [ebx + 0x42]
add byte [ebx], dl
dec esi
in al, 6
or byte [eax + eax*8], ch
in eax, dx
invalid