Function at 0x409300
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x58
mov edx, dword [esp + 0x6c]
mov dword [esp + 0x24], ecx
mov eax, dword [ecx + 0x80]
mov dword [esp + 0x20], eax
mov word [esp + 8], 0x1b1d
mov byte [esp + 0xa], 0x22
mov dword [esp + 0xb], 0
mov edi, 0xabe8b378
mov ebp, 0x54174c87
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [esp + edi + 0x54174c90]
mov ebx, edi
xor ebx, eax
or ebx, ebp
not ebx
add ebx, ebx
mov ecx, ebx
not ecx
and ecx, edi
and ebx, ebp
sub ebx, ecx
mov ecx, ebx
xor ecx, eax
not ebx
and ebx, eax
add ebx, ebx
sub ebx, ecx
add bl, 0xa8
mov byte [esp + edi + 0x54174c90], bl
inc edi
dec ebp
cmp edi, 0xabe8b37f
jne 0x409340
mov dword [esp + 0x10], edx
mov dword [esp + 0x14], 0xc6c8c4d2
mov word [esp + 0x18], 0x2dd6
mov dword [esp + 0x1a], 0
mov byte [esp + 0x1e], 0
mov ebx, 0x9083874c
mov ebp, 0xb3
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [esp + ebx + 0x6f7c78c8]
mov ecx, ebp
and ecx, eax
lea edx, [eax + eax]
not edx
add edx, eax
and edx, ebx
or edx, ecx
mov eax, edx
and eax, 3
xor edx, 0x83
lea eax, [edx + eax*2]
inc al
mov byte [esp + ebx + 0x6f7c78c8], al
inc ebx
dec ebp
cmp ebx, 0x90838757
jne 0x4093b0
mov dword [esp + 0x28], 0xbc611b1d
mov dword [esp + 0x2c], 0xb943b1ba
mov dword [esp + 0x30], 0xc21e04cc
mov dword [esp + 0x34], 0xccc1cdcf
mov dword [esp + 0x38], 0xcccbc5c9
mov dword [esp + 0x3c], 0x31761fca
mov dword [esp + 0x40], 0x16d7dbd7
mov dword [esp + 0x44], 0x2eda2c28
mov dword [esp + 0x48], 0x22dc610b
mov dword [esp + 0x4c], 0x650b20d9
mov byte [esp + 0x50], pe_nt_image_headers32
mov dword [esp + 0x51], 0
mov word [esp + 0x55], 0
xor ebx, ebx
nop
nop
movzx ebp, byte [esp + ebx + 0x28]
mov eax, 0x52d237c7
sub eax, ebx
mov edx, ebp
not edx
lea edi, [edx*2]
add edi, ebp
mov ecx, SysReAllocString
sub ecx, edi
lea edi, [ebx + 0x2d2dc838]
lea edx, [edx*2 + 1]
add edx, ebp
mov esi, edi
and esi, 0x2c244024
and eax, 0x5082065b
or eax, esi
or edi, edx
and edx, 0xae7471a4
and ecx, 0x518b8e5b
or ecx, edx
xor ecx, eax
not edi
or edi, ecx
mov ecx, 0xc7
sub ecx, ebx
and ecx, ebp
lea eax, [edi + edi]
not eax
add eax, edi
or eax, ecx
add al, 0xe8
mov byte [esp + ebx + 0x28], al
mov eax, ebx
xor eax, 1
and ebx, 1
lea ebx, [eax + ebx*2]
cmp ebx, 0x2f
jb 0x409450
mov eax, dword [esp + 0x20]
add dword [esp + 0x10], eax
mov word [esp], 0xb4b5
mov byte [esp + 2], 0x9e
mov dword [esp + 3], 0
xor edi, edi
xor ebx, ebx
nop
nop
nop
nop
nop
movzx eax, byte [esp + ebx]
mov edx, edi
and edx, 4
mov ecx, ebx
xor ecx, 0xe988a99a
add ecx, edx
mov edx, eax
not edx
or edx, ecx
lea ebp, [eax + edx]
inc ebp
mov edx, ebp
and edx, 0xfffffffd
mov esi, ebp
and esi, 2
or ebp, 2
imul ebp, esi
xor esi, 2
imul esi, edx
add ebp, esi
add ecx, eax
mov eax, ebp
xor eax, ecx
not ebp
and ebp, ecx
add ebp, ebp
sub ebp, eax
add ebp, 0x7054affd
mov eax, ebp
and eax, 1
xor ebp, 1
lea eax, [eax*2]
add eax, ebp
mov byte [esp + ebx], al
inc ebx
add edi, 2
cmp ebx, 7
jne 0x4094f0
movzx eax, byte [esp]
mov esi, dword [esp + 0x10]
mov edi, esi
test al, al
je 0x40957b
lea ecx, [esp + 1]
mov edi, esi
nop
nop
nop
nop
nop
nop
mov byte [edi], al
inc edi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x409570
mov byte [edi], 0
mov edx, dword [esp + 0x24]
movzx eax, byte [edx + 0x60]
test al, al
je 0x40959b
lea ecx, [edx + 0x61]
nop
nop
nop
mov byte [edi], al
inc edi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x409590
mov byte [edi], 0
movzx eax, byte [esp + 0x28]
test al, al
je 0x4095bb
lea ecx, [esp + 0x29]
nop
nop
nop
nop
nop
mov byte [edi], al
inc edi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x4095b0
mov byte [edi], 0
mov ecx, dword [esp + 0x70]
movzx eax, byte [ecx]
test al, al
je 0x4095db
inc ecx
nop
nop
nop
nop
nop
nop
mov byte [edi], al
inc edi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x4095d0
mov byte [edi], 0
movzx eax, byte [esp + 0x14]
test al, al
je 0x4095fb
lea ecx, [esp + 0x15]
nop
nop
nop
nop
nop
mov byte [edi], al
inc edi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x4095f0
mov byte [edi], 0
mov ecx, dword [esp + 0x74]
movzx eax, byte [ecx]
test al, al
je 0x40961b
inc ecx
nop
nop
nop
nop
nop
nop
mov byte [edi], al
inc edi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x409610
mov byte [edi], 0
movzx eax, byte [esp + 8]
test al, al
je 0x40963b
lea ecx, [esp + 9]
nop
nop
nop
nop
nop
mov byte [edi], al
inc edi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x409630
mov byte [edi], 0
sub edi, esi
add dword [edx + 0x80], edi
add esp, 0x58
pop esi
pop edi
pop ebx
pop ebp
ret 0xc