Function at 0x441592
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x2c
mov edi, dword [esp + 0x40]
movzx eax, word [edi]
mov dword [esp + 4], 0x292a7577
mov byte [esp + 8], 0
mov ecx, 0x87
mov edx, pe_nt_image_headers32
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + ecx - 0x83]
mov ebx, edx
xor ebx, ecx
and ebx, esi
xor ebx, ecx
add bl, 0x5d
mov byte [esp + ecx - 0x83], bl
inc ecx
dec edx
cmp ecx, 0x8c
jne case.default.0x440eef
xor ecx, ecx
cmp dword [esp + 4], eax
setne cl
xor eax, eax
jmp dword [ecx*4 + 0x44ddd8]
mov ebp, dword [edi + 0x3c]
mov esi, dword [edi + ebp]
mov dword [esp + 4], 0x7f7e3c08
mov word [esp + 8], 0
mov byte [esp + 0xa], 0
mov edx, 0x6a
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + edx - 0x66]
mov ebx, ecx
and ebx, edx
add bl, bl
sub cl, bl
movzx ecx, cl
add ecx, edx
add cl, 0xee
mov byte [esp + edx - 0x66], cl
inc edx
cmp edx, 0x71
jne case.default.0x440f4a
xor ecx, ecx
cmp esi, dword [esp + 4]
setne cl
xor eax, eax
jmp dword [ecx*4 + 0x44dde0]
mov edx, dword [edi + ebp + 0x78]
cmp dword [edi + ebp + 0x7c], 0
sete al
test edx, edx
sete cl
or cl, al
movzx ecx, cl
xor eax, eax
mov dword [esp + 0x10], edx
jmp dword [ecx*4 + 0x44dde8]
mov eax, dword [edi + edx + 0x20]
add eax, edi
mov dword [esp + 0x28], eax
mov eax, dword [edi + edx + 0x24]
add eax, edi
mov dword [esp + 0x20], eax
mov eax, dword [edi + edx + 0x1c]
add eax, edi
mov dword [esp + 0x1c], eax
mov ebp, dword [0x44f894]
xor eax, eax
test ebp, ebp
sete al
jmp dword [eax*4 + 0x44ddf0]
jmp dword [0x44ddfc]
mov esi, dword [0x44f890]
mov eax, dword [esp + 0x10]
mov eax, dword [edi + eax + 0x18]
add eax, esi
mov ecx, 0xffffffff
cmp eax, 0x20000000
jae 0x440fcd
shl eax, 3
mov ecx, eax
push ecx
call fcn.0040c560
add esp, 4
mov edx, esi
and edx, 8
mov ecx, esi
or esi, 8
imul esi, edx
xor edx, 8
and ecx, 0xfffffff7
imul ecx, edx
lea ebx, [ecx + esi]
lea edx, [ebx + ebp]
cmp eax, ebp
jbe 0x4410ba
cmp edx, eax
jbe 0x4410ba
test ebx, ebx
je case.0x440f4a.6
lea edx, [ecx + ebp]
dec edx
add eax, ecx
dec eax
neg ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [edx + esi]
mov byte [eax + esi], bl
movzx ebx, byte [edx + esi - 1]
mov byte [eax + esi - 1], bl
movzx ebx, byte [edx + esi - 2]
mov byte [eax + esi - 2], bl
movzx ebx, byte [edx + esi - 3]
mov byte [eax + esi - 3], bl
movzx ebx, byte [edx + esi - 4]
mov byte [eax + esi - 4], bl
movzx ebx, byte [edx + esi - 5]
mov byte [eax + esi - 5], bl
movzx ebx, byte [edx + esi - 6]
mov byte [eax + esi - 6], bl
movzx ebx, byte [edx + esi - 7]
mov byte [eax + esi - 7], bl
add esi, 0xfffffff8
cmp ecx, esi
jne 0x441020
jmp case.0x440f4a.6
mov eax, dword [edi + edx + 0x18]
mov ecx, 0xffffffff
cmp eax, 0x20000000
mov ebp, edx
jae 0x441089
shl eax, 3
mov ecx, eax
push ecx
call fcn.0040c560
add esp, 4
mov dword [0x44f894], eax
lea eax, [edi - 1]
mov dword [esp + 0x18], eax
xor ecx, ecx
xor eax, eax
mov dword [esp + 0x14], 0
cmp ecx, dword [edi + ebp + 0x18]
setb al
xor esi, esi
jmp dword [eax*4 + 0x44de10]
mov ecx, ebx
shr ecx, 2
mov edi, eax
xchg esi, ebp
rep movsd dword es:[edi], dword [esi]
xchg esi, ebp
add eax, ebx
mov edi, eax
xor ecx, ecx
xchg esi, edx
rep movsw word es:[edi], word [esi]
xchg esi, edx
mov edi, dword [esp + 0x40]
mov ebp, dword [0x44f894]
jmp case.0x440f4a.6
mov ebp, dword [0x44f894]
mov edi, dword [esp + 0x40]
jmp dword [0x44de00]
mov esi, dword [0x44f890]
mov eax, dword [esp + 0x10]
mov eax, dword [edi + eax + 0x18]
add eax, esi
mov ecx, 0xffffffff
cmp eax, 0x20000000
jae 0x441111
shl eax, 3
mov ecx, eax
mov ebx, esi
not ebx
push ecx
call fcn.0040c560
add esp, 4
and ebx, 8
mov edi, esi
and edi, 0xfffffff7
imul edi, ebx
mov ebx, esi
xor ebx, 0xfffffff7
or esi, 8
and ebx, esi
imul ebx, esi
lea esi, [ebx + edi]
mov dword [esp], eax
cmp eax, ebp
jbe 0x441200
lea eax, [esi + ebp]
cmp eax, dword [esp]
jbe 0x441200
test esi, esi
je 0x4410e0
lea ecx, [esi + ebp]
dec ecx
mov eax, dword [esp]
lea edx, [eax + esi]
dec edx
mov dword [esp + 0xc], ebx
and ebx, 7
je 0x441182
neg ebx
xor ebp, ebp
nop
nop
nop
nop
movzx eax, byte [ecx + ebp]
mov byte [edx + ebp], al
dec ebp
cmp ebx, ebp
jne 0x441170
add ecx, ebp
add edx, ebp
add esi, ebp
mov eax, dword [esp + 0xc]
add eax, edi
dec eax
cmp eax, 7
jb 0x4410e0
neg esi
xor edi, edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [ecx + edi]
mov byte [edx + edi], al
movzx eax, byte [ecx + edi - 1]
mov byte [edx + edi - 1], al
movzx eax, byte [ecx + edi - 2]
mov byte [edx + edi - 2], al
movzx eax, byte [ecx + edi - 3]
mov byte [edx + edi - 3], al
movzx eax, byte [ecx + edi - 4]
mov byte [edx + edi - 4], al
movzx eax, byte [ecx + edi - 5]
mov byte [edx + edi - 5], al
movzx eax, byte [ecx + edi - 6]
mov byte [edx + edi - 6], al
movzx eax, byte [ecx + edi - 7]
mov byte [edx + edi - 7], al
add edi, 0xfffffff8
cmp esi, edi
jne 0x4411a0
jmp 0x4410e0
mov ecx, esi
shr ecx, 2
mov eax, ebp
mov edx, dword [esp]
mov edi, edx
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
and esi, 0xfffffffc
add ebp, esi
add edx, esi
mov ecx, ebx
shr ecx, 1
and ecx, 1
mov eax, ebp
mov edi, edx
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
test bl, 1
je 0x4410e0
and ebx, 2
movzx eax, byte [ebp + ebx]
mov byte [edx + ebx], al
mov ebp, dword [0x44f894]
mov edi, dword [esp + 0x40]
jmp dword [0x44de00]
xor eax, eax
test ebp, ebp
sete al
jmp dword [eax*4 + 0x44de08]
push ebp
call fcn.0040c570
add esp, 4
mov eax, dword [esp]
mov dword [0x44f894], eax
lea eax, [edi - 1]
mov dword [esp + 0x18], eax
xor ecx, ecx
xor eax, eax
mov ebp, dword [esp + 0x10]
mov dword [esp + 0x14], 0
cmp ecx, dword [edi + ebp + 0x18]
setb al
xor esi, esi
jmp dword [eax*4 + 0x44de10]
mov eax, dword [esp]
mov dword [0x44f894], eax
lea eax, [edi - 1]
mov dword [esp + 0x18], eax
xor ecx, ecx
xor eax, eax
mov ebp, dword [esp + 0x10]
mov dword [esp + 0x14], 0
cmp ecx, dword [edi + ebp + 0x18]
setb al
xor esi, esi
jmp dword [eax*4 + 0x44de10]
mov ebp, dword [eax + ecx + 1]
xor eax, eax
cmp ebp, 0xffffffff
setne al
jmp dword [eax*4 + 0x44de50]
mov dword [esp + 0xc], esi
xor eax, eax
xor edx, edx
cmp eax, dword [0x44f890]
setb dl
xor ecx, ecx
jmp dword [edx*4 + 0x44de58]
mov edx, dword [0x44f894]
xor ebx, ebx
cmp dword [edx + ecx*8], edi
sete bl
mov esi, 1
jmp dword [ebx*4 + 0x44de60]
jmp dword [0x44de6c]
mov dword [edx + ecx*8 + 4], ebp
xor esi, esi
mov al, 1
jmp dword [0x44de74]
mov dword [edx + ecx*8 + 4], ebp
mov dword [edx + ecx*8 + 4], ebp
xor esi, esi
mov al, 1
jmp dword [0x44de74]
jmp dword [esi*4 + 0x44de78]
inc ecx
xor edx, edx
cmp ecx, dword [0x44f890]
setb dl
jmp dword [edx*4 + 0x44de58]
and al, 1
movzx eax, al
mov cl, 1
mov dword [esp + 0x14], ecx
mov esi, dword [esp + 0xc]
jmp dword [eax*4 + 0x44de80]
mov eax, dword [0x44f894]
mov ecx, dword [0x44f890]
lea edx, [ecx + 1]
mov dword [0x44f890], edx
mov dword [eax + ecx*8], edi
mov dword [eax + ecx*8 + 4], ebp
jmp case.0x440f4a.16
mov eax, dword [esp + 0x28]
mov dword [esp + 0xc], esi
mov eax, dword [eax + esi*4]
lea edx, [edi + eax]
add eax, dword [esp + 0x18]
mov ecx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
inc eax
cmp byte [ecx], 0
lea ecx, [ecx + 1]
jne 0x4413b0
mov dword [esp], edx
not edx
and edx, eax
mov dword [esp + 4], 0x22262489
mov ecx, 0x57a10eb9
nop
nop
nop
movzx ebx, byte [esp + ecx - 0x57a10eb5]
mov esi, ecx
and esi, ebx
add esi, esi
sub ebx, esi
add ebx, ecx
lea esi, [ebx + ebx]
mov edi, esi
and edi, 0xc4
xor ebx, 0x62
add ebx, edi
and esi, 2
xor ebx, 1
add ebx, esi
mov byte [esp + ecx - 0x57a10eb5], bl
inc ecx
cmp ecx, 0x57a10ebd
jne 0x4413d0
add edx, edx
xor eax, dword [esp]
mov ecx, edx
mov edi, 0xfb520141
sub ecx, eax
je 0x4414a9
mov esi, dword [esp + 4]
mov ebx, esi
not ebx
inc eax
mov ebp, dword [esp]
cmp edx, eax
je 0x441488
mov dword [esp + 0x24], ecx
mov eax, ecx
and eax, 0xfffffffe
mov ebp, dword [esp]
nop
nop
nop
nop
nop
nop
movsx edx, byte [ebp]
xor edx, edi
mov edi, edx
and edi, ebx
mov ecx, edx
not ecx
and ecx, esi
imul ecx, edi
mov edi, edx
and edi, esi
or edx, esi
imul edx, edi
add edx, ecx
movsx edi, byte [ebp + 1]
add ebp, 2
xor edi, edx
mov ecx, edi
and ecx, ebx
mov edx, edi
not edx
and edx, esi
imul edx, ecx
mov ecx, edi
and ecx, esi
or edi, esi
imul edi, ecx
add edi, edx
add eax, 0xfffffffe
jne 0x441440
mov ecx, dword [esp + 0x24]
test cl, 1
je 0x4414a9
movsx eax, byte [ebp]
xor edi, eax
and ebx, edi
mov eax, edi
not eax
and eax, esi
imul eax, ebx
mov ecx, edi
and ecx, esi
or edi, esi
imul edi, ecx
add edi, eax
mov eax, edi
xor eax, 0xaa8a99d1
xor ecx, ecx
or eax, dword [0x44f898]
sete cl
jmp dword [ecx*4 + 0x44de18]
xor eax, eax
mov ecx, dword [esp]
cmp byte [ecx], 0x4e
setne al
mov esi, dword [esp + 0xc]
jmp dword [eax*4 + 0x44de20]
xor eax, eax
cmp byte [ecx + 1], 0x74
setne al
jmp dword [eax*4 + 0x44de28]
mov eax, dword [esp + 0x20]
movzx eax, word [eax + esi*2]
mov ecx, dword [esp + 0x1c]
mov eax, dword [ecx + eax*4]
add eax, dword [esp + 0x40]
xor ecx, ecx
xor edx, edx
cmp ecx, 0x20
setb dl
mov ebp, 0xffffffff
jmp dword [edx*4 + 0x44de30]
movzx edx, byte [eax + ecx]
xor ebx, ebx
cmp dl, 0xc2
sete bl
jmp dword [ebx*4 + 0x44de38]
xor ebx, ebx
cmp dl, 0xc3
sete bl
jmp dword [ebx*4 + 0x44de40]
xor ebx, ebx
cmp dl, 0xb8
sete bl
jmp dword [ebx*4 + 0x44de48]
inc ecx
xor edx, edx
cmp ecx, 0x20
setb dl
jmp dword [edx*4 + 0x44de30]
xor eax, eax
cmp ebp, 0xffffffff
setne al
jmp dword [eax*4 + 0x44de50]
mov eax, dword [esp + 0x20]
mov esi, dword [esp + 0xc]
movzx eax, word [eax + esi*2]
mov ecx, dword [esp + 0x1c]
mov eax, dword [ecx + eax*4]
mov dword [0x44f898], eax
mov eax, dword [case.0x440f4a.44]
nop
nop
nop
jmp eax
inc esi
xor eax, eax
mov edi, dword [esp + 0x40]
mov ebp, dword [esp + 0x10]
cmp esi, dword [edi + ebp + 0x18]
setb al
jmp dword [eax*4 + 0x44de10]
mov eax, dword [esp + 0x14]
and al, 1
mov ecx, dword [case.0x440f4a.48]
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp ecx
add esp, 0x2c
pop esi
pop edi
pop ebx
pop ebp
ret