Function at 0x444430
Capabilities:
Encode data using xor

Disassembly:
push 0xffffffffffffffff
push 0x488a56
mov eax, dword fs:[0]
push eax
sub esp, 0x8bc
push ebx
push ebp
push esi
push edi
mov eax, dword [0x49e7c0]
xor eax, esp
push eax
lea eax, [esp + 0x8d0]
mov dword fs:[0], eax
mov esi, ecx
cmp dword [esi + 0x444], 0
je 0x44483a
mov ebx, dword [esp + 0x8ec]
test ebx, ebx
jle 0x44483a
mov edi, dword [esp + 0x8f0]
test edi, edi
jle 0x44483a
lea ecx, [esp + 0x28]
call fcn.0041e6a0
mov dword [esp + 0x28], vtable.CDIB_Convert.0
mov eax, dword [esp + 0x8f8]
mov ecx, dword [esp + 0x8f4]
push 1
push 0
push 0
push 0
push 1
push 1
push edi
push ebx
push eax
push ecx
add esi, 8
push esi
lea ecx, [esp + 0x54]
mov dword [esp + 0x904], 0
call fcn.0041a150
mov esi, eax
test esi, esi
jne 0x444822
lea ecx, [esp + 0x47c]
call fcn.0041e6a0
mov dword [esp + 0x47c], 0x48ddf0
push esi
push 1
push esi
push 1
push 1
push edi
push ebx
push esi
push esi
push 0x4000020
lea ecx, [esp + 0x4a4]
mov byte [esp + 0x900], 1
call fcn.0041e8e0
mov esi, eax
test esi, esi
jne 0x44480e
movzx ecx, word [esp + 0x4a]
mov eax, ecx
imul eax, dword [esp + 0x40]
mov ebx, dword [esp + 0x470]
add eax, 7
cdq
and edx, 7
add eax, edx
mov esi, eax
mov eax, ecx
cdq
and edx, 7
add eax, edx
sar esi, 3
mov ecx, eax
add esi, 3
sar ecx, 3
imul ecx, dword [esp + 0x46c]
and esi, 0xfffffffc
cmp dword [esp + 0x44], 0
mov dword [esp + 0x1c], esi
jge 0x44457c
mov edi, ebx
imul edi, esi
add edi, ecx
add edi, dword [esp + 0x464]
mov dword [esp + 0x14], edi
jmp 0x4445a0
mov eax, dword [esp + 0x478]
sub eax, ebx
sub eax, 1
imul eax, esi
add eax, ecx
add eax, dword [esp + 0x464]
neg esi
mov dword [esp + 0x14], eax
mov dword [esp + 0x1c], esi
mov edi, eax
movzx eax, word [esp + 0x49e]
imul eax, dword [esp + 0x494]
add eax, 7
cdq
and edx, 7
add eax, edx
mov ebp, eax
sar ebp, 3
add ebp, 3
and ebp, 0xfffffffc
cmp dword [esp + 0x498], 0
mov dword [esp + 0x24], ebp
jge 0x4445e0
imul ebx, esi
add ebx, ecx
add ebx, dword [esp + 0x8b8]
jmp 0x44461e
movzx eax, word [esp + 0x49e]
mov ecx, dword [esp + 0x8cc]
sub ecx, dword [esp + 0x8c4]
cdq
and edx, 7
sub ecx, 1
add eax, edx
imul ecx, ebp
add ecx, dword [esp + 0x8b8]
mov ebx, eax
sar ebx, 3
imul ebx, dword [esp + 0x8c0]
add ebx, ecx
neg ebp
mov dword [esp + 0x24], ebp
movzx eax, word [esp + 0x4a]
cmp eax, 0x18
jne 0x444703
mov eax, dword [esp + 0x8f0]
test eax, eax
jle 0x4447d8
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x900]
xor edi, edi
cmp dword [esp + 0x8ec], edi
jle 0x4446eb
mov ecx, dword [esp + 0x8fc]
mov esi, dword [esp + 0x14]
and ecx, 0xfefefeff
mov dword [esp + 0x20], ecx
add esi, 1
lea ecx, [ecx]
movzx ecx, byte [esi - 1]
xor edx, edx
mov dh, byte [esi + 1]
add edi, 1
add esi, 3
mov dl, byte [esi - 3]
shl edx, 8
or edx, ecx
mov ebp, edx
mov ecx, ebp
not ecx
mov edx, ecx
xor ecx, eax
and ecx, 0xfefefe
and edx, eax
lea ecx, [ecx + edx*2]
shr ecx, 8
and ecx, 0x10101
add ecx, 0x7f7f7f
xor ecx, 0x7f7f7f
mov edx, ecx
or ecx, eax
or edx, ebp
sub edx, ecx
mov ecx, dword [esp + 0x20]
and edx, 0xfefeff
add edx, ecx
mov ecx, edx
shr ecx, 8
and ecx, 0x10101
imul ecx, ecx, 0xff
sub edx, ecx
or edx, ecx
cmp edi, dword [esp + 0x8ec]
mov dword [ebx + edi*4 - 4], edx
jl 0x444670
mov esi, dword [esp + 0x1c]
add dword [esp + 0x14], esi
add ebx, dword [esp + 0x24]
sub dword [esp + 0x18], 1
jne 0x444646
jmp 0x4447d8
cmp eax, 0x20
jne 0x4447d8
cmp dword [esp + 0x8f0], 0
jle 0x4447d8
mov edx, dword [esp + 0x8f0]
mov ebp, dword [esp + 0x900]
mov dword [esp + 0x18], edx
jmp 0x444734
mov edi, dword [esp + 0x14]
mov eax, edi
xor edi, edi
cmp dword [esp + 0x8ec], edi
jle 0x4447c5
mov ecx, dword [esp + 0x8fc]
and ecx, 0xfefefeff
mov dword [esp + 0x20], ecx
mov esi, dword [eax]
and esi, 0xffffff
mov ecx, esi
not ecx
mov edx, ecx
xor ecx, ebp
and ecx, 0xfefefe
and edx, ebp
lea ecx, [ecx + edx*2]
shr ecx, 8
and ecx, 0x10101
add ecx, 0x7f7f7f
xor ecx, 0x7f7f7f
mov edx, ecx
or ecx, ebp
or edx, esi
sub edx, ecx
mov ecx, dword [esp + 0x20]
and edx, 0xfefeff
add edx, ecx
mov ecx, edx
shr ecx, 8
and ecx, 0x10101
imul ecx, ecx, 0xff
sub edx, ecx
or edx, ecx
mov dword [ebx + edi*4], edx
add edi, 1
add eax, 4
cmp edi, dword [esp + 0x8ec]
jl 0x444756
mov esi, dword [esp + 0x1c]
add dword [esp + 0x14], esi
add ebx, dword [esp + 0x24]
sub dword [esp + 0x18], 1
jne 0x444730
mov edx, dword [esp + 0x8f0]
mov eax, dword [esp + 0x8ec]
mov ecx, dword [esp + 0x8e8]
push edx
mov edx, dword [esp + 0x8e8]
push eax
mov eax, dword [esp + 0x8e8]
push ecx
push edx
push eax
lea ecx, [esp + 0x490]
call fcn.0042b3d0
mov esi, eax
lea ecx, [esp + 0x47c]
mov byte [esp + 0x8d8], 0
call fcn.0041ed00
lea ecx, [esp + 0x28]
mov dword [esp + 0x8d8], 0xffffffff
call fcn.0041ed00
mov eax, esi
jmp 0x44483d
or eax, 0xffffffff
mov ecx, dword [esp + 0x8d0]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x8c8
ret 0x24