Function at 0x409520
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x84
mov edx, dword [ecx + 0x80]
mov dword [esp + 0x14], 0x979c9ee3
mov dword [esp + 0x18], 0xda929b81
mov dword [esp + 0x1c], 0x9e8ab0ec
mov dword [esp + 0x20], 0x8b9fddf6
mov dword [esp + 0x24], 0x8b919084
mov dword [esp + 0x28], 0x83889089
mov dword [esp + 0x2c], 0xb4f781f7
mov dword [esp + 0x30], 0xacabb7ae
mov dword [esp + 0x34], 0x1e181cb4
mov word [esp + 0x38], 0x51e
mov dword [esp + 0x3a], 0
mov byte [esp + 0x3e], 0
xor ebx, ebx
nop
nop
mov eax, ebx
add al, 0x48
xor al, byte [esp + ebx + 0x14]
add al, 0x98
mov byte [esp + ebx + 0x14], al
inc ebx
cmp ebx, 0x2b
jne 0x409590
mov dword [esp + 8], 0x7104006e
mov word [esp + 0xc], 0
mov byte [esp + 0xe], 0
xor ebx, ebx
nop
nop
nop
nop
nop
nop
mov eax, ebx
add al, 0xbd
xor al, byte [esp + ebx + 8]
add al, 0x4f
mov byte [esp + ebx + 8], al
mov eax, ebx
not eax
or eax, 1
add eax, ebx
or ebx, 1
add ebx, eax
inc ebx
cmp ebx, 7
jb 0x4095c0
mov dword [esp + 0x44], 0x9ce13b3d
mov dword [esp + 0x48], 0x9983919a
mov dword [esp + 0x4c], 0x82fec48c
mov dword [esp + 0x50], 0x8c818d8f
mov dword [esp + 0x54], 0x8c8b8589
mov dword [esp + 0x58], 0x91d6ff8a
mov dword [esp + 0x5c], 0xf6b7bbb7
mov dword [esp + 0x60], 0xaebaaca8
mov dword [esp + 0x64], 0xa2bce1cb
mov dword [esp + 0x68], 0xe5cba0b9
mov dword [esp + 0x6c], 0xbea6a0be
mov dword [esp + 0x70], 0xb9fed6fe
mov dword [esp + 0x74], 0xadb7ada9
mov dword [esp + 0x78], 0xdab3a8b5
mov word [esp + 0x7c], 0xe90a
mov dword [esp + 0x7e], 0
mov word [esp + 0x82], 0
mov esi, 0xc8
mov edi, 0x43705937
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebp, byte [esp + esi - 0x84]
lea eax, [esi - 0x43705a00]
mov ebx, eax
and ebx, esi
and ebx, ebp
add ebx, ebx
xor eax, ebx
and ebx, edi
add ebx, ebx
sub ebx, eax
mov eax, ebp
not eax
and eax, ebx
not ebx
and ebx, ebp
sub ebx, eax
add bl, 0x18
mov byte [esp + esi - 0x84], bl
inc esi
dec edi
cmp esi, 0x108
jne 0x409680
mov edi, dword [esp + 0x98]
add edi, edx
mov word [esp], 0x5455
mov byte [esp + 2], 0x3e
mov word [esp + 3], 0
mov byte [esp + 5], 0
xor edx, edx
mov eax, edx
add al, 0xa
xor al, byte [esp + edx]
add al, 0xce
mov byte [esp + edx], al
inc edx
cmp edx, 6
jne 0x4096e0
movzx ebx, byte [esp]
mov edx, edi
test bl, bl
mov eax, ecx
je 0x40971b
lea esi, [esp + 1]
mov edx, edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], bl
inc edx
movzx ebx, byte [esi]
inc esi
test bl, bl
jne 0x409710
mov byte [edx], 0
movzx ebx, byte [eax + 0x60]
test bl, bl
mov ecx, dword [esp + 0x9c]
je 0x40973b
lea esi, [eax + 0x61]
mov byte [edx], bl
inc edx
movzx ebx, byte [esi]
inc esi
test bl, bl
jne 0x409730
mov byte [edx], 0
movzx ebx, byte [esp + 0x44]
test bl, bl
je 0x40975b
lea esi, [esp + 0x45]
nop
nop
nop
nop
nop
mov byte [edx], bl
inc edx
movzx ebx, byte [esi]
inc esi
test bl, bl
jne 0x409750
mov byte [edx], 0
movzx ebx, byte [ecx]
test bl, bl
je 0x40977b
inc ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], bl
inc edx
movzx ebx, byte [ecx]
inc ecx
test bl, bl
jne 0x409770
mov byte [edx], 0
movzx ecx, byte [esp + 8]
test cl, cl
je 0x40979b
lea esi, [esp + 9]
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [esi]
inc esi
test cl, cl
jne 0x409790
mov byte [edx], 0
movzx ecx, byte [esp + 0x14]
test cl, cl
mov dword [esp + 0x10], eax
mov dword [esp + 0x40], edi
je 0x4097cb
lea esi, [esp + 0x15]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [esi]
inc esi
test cl, cl
jne 0x4097c0
mov byte [edx], 0
mov esi, dword [esp + 0xa4]
mov ecx, esi
shr ecx, 2
mov ebp, dword [esp + 0xa0]
mov eax, ebp
mov edi, edx
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov eax, esi
mov ebx, esi
and ebx, 0xfffffffc
lea esi, [edx + ebx]
add ebx, ebp
mov ecx, eax
mov ebp, eax
shr ecx, 1
and ecx, 1
mov eax, ebx
mov edi, esi
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
mov eax, ebp
test al, 1
je 0x40981e
mov eax, dword [esp + 0xa4]
and eax, 2
movzx ecx, byte [ebx + eax]
mov byte [esi + eax], cl
mov dword [esp + 0x44], 0x31333735
mov byte [esp + 0x48], 0xcc
mov dword [esp + 0x49], 0
mov word [esp + 0x4d], 0
mov ecx, 0x7a5b18b2
mov edi, dword [esp + 0x40]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [esp + ecx - 0x7a5b186e]
xor eax, ecx
add eax, 0x9c388485
mov esi, eax
and esi, 1
xor eax, 1
lea eax, [eax + esi*2]
mov byte [esp + ecx - 0x7a5b186e], al
inc ecx
cmp ecx, 0x7a5b18bd
jne 0x409850
mov dword [esp + 0x14], 0xeeefcbcd
mov byte [esp + 0x18], 0xc4
mov dword [esp + 0x19], 0
mov ecx, 0x50
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + ecx - 0x3c]
mov eax, ebx
and eax, ecx
add al, al
sub bl, al
movzx eax, bl
add eax, ecx
add al, 0x70
mov byte [esp + ecx - 0x3c], al
inc ecx
cmp ecx, 0x59
jne 0x4098a0
add edx, dword [esp + 0xa4]
movzx ecx, byte [esp + 0x14]
test cl, cl
je 0x4098ed
lea esi, [esp + 0x15]
mov eax, dword [esp + 0x10]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [esi]
inc esi
test cl, cl
jne 0x4098e0
jmp 0x4098f1
mov eax, dword [esp + 0x10]
mov byte [edx], 0
movzx ecx, byte [eax + 0x60]
test cl, cl
je 0x40990b
lea esi, [eax + 0x61]
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [esi]
inc esi
test cl, cl
jne 0x409900
mov byte [edx], 0
movzx ecx, byte [esp + 0x44]
test cl, cl
je 0x40992b
lea esi, [esp + 0x45]
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [esi]
inc esi
test cl, cl
jne 0x409920
mov byte [edx], 0
sub edx, edi
add dword [eax + 0x80], edx
add esp, 0x84
pop esi
pop edi
pop ebx
pop ebp
ret 0x10