Function at 0x440580
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x18
mov ebp, dword [esp + 0x34]
mov dword [esp], 0xf8fbfa05
mov word [esp + 4], 0
mov byte [esp + 6], 0
mov eax, 0x5492bfff
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax - 0x5492bfff]
mov esi, eax
or esi, edx
not edx
or edx, ecx
and edx, esi
mov esi, 1
sub esi, edx
mov edi, esi
not edi
and edi, 1
mov ebx, 0xfb
sub ebx, edx
and ebx, 0xfe
or esi, 0xfe
xor esi, ebx
lea edx, [esi + edi*2]
mov byte [esp + eax - 0x5492bfff], dl
inc eax
dec ecx
cmp eax, 0x5492c006
jne 0x4405b0
mov esi, dword [esp]
mov eax, dword [0x44ce64]
test eax, eax
je 0x44064e
xor ecx, ecx
mov edx, dword [0x44ce68]
nop
nop
nop
nop
cmp dword [edx + ecx*8], 0x3052ea03
je 0x440620
inc ecx
cmp eax, ecx
jne 0x440610
jmp 0x44064e
mov eax, dword [edx + ecx*8 + 4]
cmp eax, esi
je 0x44064e
lea ecx, [esp + 0x14]
push ecx
push 0
push 0
push 0
push dword [esp + 0x40]
push dword [esp + 0x40]
push 0x18
push eax
push dword [0x44ce6c]
call fcn.0043d480
add esp, 0x24
mov esi, eax
mov dword [esp], 0x1464769
mov edx, 0x6d77ee91
nop
nop
nop
nop
nop
nop
movzx eax, byte [esp + edx - 0x6d77ee91]
mov ecx, eax
mov edi, eax
and ecx, edx
mov eax, ecx
or al, 0xfd
inc al
mov ah, cl
and ah, 0x95
mul ah
mov ebx, eax
mov eax, edi
add bl, al
mov eax, ecx
shr al, 1
and al, 1
or cl, 2
mul cl
add al, al
sub bl, al
movzx eax, bl
add eax, edx
add al, 0x2b
mov byte [esp + edx - 0x6d77ee91], al
inc edx
cmp edx, 0x6d77ee95
jne 0x440660
cmp esi, dword [esp]
jne 0x4408c8
mov dword [esp + 0xc], ebp
push dword [esp + 0x14]
call fcn.0043a6f0
add esp, 4
mov dword [esp + 8], eax
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x10], ecx
mov dword [esp], 0xf8fbfa05
mov word [esp + 4], 0
mov byte [esp + 6], 0
mov edx, 0x5492bfff
xor esi, esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + edx - 0x5492bfff]
mov edi, edx
or edi, ebx
not ebx
or ebx, esi
and ebx, edi
mov edi, 1
sub edi, ebx
mov ecx, edi
not ecx
and ecx, 1
mov ebp, 0xfb
sub ebp, ebx
and ebp, 0xfe
or edi, 0xfe
xor edi, ebp
lea ecx, [edi + ecx*2]
mov byte [esp + edx - 0x5492bfff], cl
inc edx
dec esi
cmp edx, 0x5492c006
jne 0x4406f0
mov esi, dword [esp]
mov edx, dword [0x44ce64]
test edx, edx
je 0x440774
xor ebx, ebx
mov edi, dword [0x44ce68]
mov ebp, dword [esp + 0x38]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [edi + ebx*8], 0x3052ea03
je 0x440804
inc ebx
cmp edx, ebx
jne 0x440760
jmp 0x440778
mov ebp, dword [esp + 0x38]
mov ebx, dword [esp + 8]
test ebp, ebp
je 0x4408bf
test esi, esi
js 0x4408bf
cmp dword [esp + 0x34], 0
je 0x4408b7
mov ecx, dword [ebx + 0xc]
shr ecx, 1
mov edx, dword [ebp]
cmp edx, ecx
jb 0x4407a5
mov edx, ecx
test edx, edx
mov ebp, dword [esp + 0x34]
je 0x4408aa
add eax, 0x10
mov ecx, edx
and ecx, 3
je 0x440844
mov dword [esp + 0x10], edx
xor edi, edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, word [eax]
xor edx, edx
test bx, bx
setne dl
lea eax, [eax + edx*2]
mov word [ebp], bx
add ebp, 2
inc edi
cmp ecx, edi
jne 0x4407d0
mov dword [esp + 0xc], ebp
mov edx, dword [esp + 0x10]
mov ebp, edx
sub ebp, edi
mov ebx, dword [esp + 8]
cmp edx, 4
jae 0x44084b
jmp 0x4408aa
mov edx, dword [edi + ebx*8 + 4]
cmp edx, esi
mov ebx, dword [esp + 8]
je 0x44077c
lea ecx, [esp + 0x14]
push ecx
push dword [esp + 0x14]
push ebx
push 0
push dword [esp + 0x40]
push dword [esp + 0x40]
push 0x18
push edx
push dword [0x44ce6c]
mov edi, eax
call fcn.0043d480
add esp, 0x24
mov esi, eax
mov eax, edi
jmp 0x44077c
mov ebp, edx
cmp edx, 4
jb 0x4408aa
mov ebx, dword [esp + 0xc]
nop
movzx edx, word [eax]
xor ecx, ecx
test dx, dx
setne cl
lea edi, [eax + ecx*2]
mov word [ebx], dx
movzx eax, word [eax + ecx*2]
xor ecx, ecx
test ax, ax
setne cl
lea edx, [edi + ecx*2]
mov word [ebx + 2], ax
movzx eax, word [edi + ecx*2]
xor ecx, ecx
test ax, ax
setne cl
lea edi, [edx + ecx*2]
mov word [ebx + 4], ax
movzx ecx, word [edx + ecx*2]
xor eax, eax
test cx, cx
setne al
mov word [ebx + 6], cx
add ebx, 8
lea eax, [edi + eax*2]
add ebp, 0xfffffffc
jne 0x440850
mov dword [esp + 0xc], ebx
mov ebx, dword [esp + 8]
mov eax, dword [esp + 0xc]
mov word [eax], 0
mov ebp, dword [esp + 0x38]
mov eax, dword [ebx + 0xc]
shr eax, 1
mov dword [ebp], eax
push ebx
call fcn.0043a760
add esp, 4
mov eax, esi
add esp, 0x18
pop esi
pop edi
pop ebx
pop ebp
ret