Function at 0x40a640
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x58
mov edx, dword [esp + 0x74]
mov esi, dword [esp + 0x70]
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x10], eax
mov dword [esp + 0x24], ecx
mov eax, dword [ecx + 0x80]
mov dword [esp + 0x20], eax
mov word [esp + 8], 0x6577
mov byte [esp + 0xa], 0x6a
mov word [esp + 0xb], 0
mov byte [esp + 0xd], 0
xor ebx, ebx
nop
mov eax, ebx
add al, 0x67
xor al, byte [esp + ebx + 8]
add al, 0xfd
mov byte [esp + ebx + 8], al
mov eax, ebx
and eax, 1
xor ebx, 1
lea ebx, [ebx + eax*2]
cmp ebx, 6
jb 0x40a680
mov dword [esp + 0x14], 0x1a241802
mov dword [esp + 0x18], 0x2f26
mov byte [esp + 0x1c], 0
xor ecx, ecx
xor edi, edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [esp + edi + 0x14]
mov ebx, ecx
and ebx, 0xe
mov ebp, edi
xor ebp, 0xf6b31ff7
add ebp, ebx
xor ebp, eax
mov eax, ebp
and eax, 0x2c
xor ebp, 0x2c
lea eax, [eax*2]
add eax, ebp
inc al
mov byte [esp + edi + 0x14], al
inc edi
add ecx, 2
cmp edi, 9
jne 0x40a6c0
mov dword [esp + 0x28], 0xe4314b45
mov dword [esp + 0x2c], 0xf9f3e1fa
mov dword [esp + 0x30], 0xf2163ce4
mov dword [esp + 0x34], 0xf4f1f5f7
mov dword [esp + 0x38], 0xf4fbedf9
mov dword [esp + 0x3c], 0x1bed70a
mov dword [esp + 0x40], 0xce0f0b0f
mov dword [esp + 0x44], 0xf61af408
mov dword [esp + 0x48], 0xf204b1db
mov dword [esp + 0x4c], 0xadcb1019
mov byte [esp + 0x50], 0x88
mov dword [esp + 0x51], 0
mov word [esp + 0x55], 0
xor ebx, ebx
nop
nop
nop
nop
movzx eax, byte [esp + ebx + 0x28]
lea ecx, [ebx - 0x5686794]
and ecx, eax
add eax, ebx
add eax, 0xfa97986c
add ecx, ecx
sub eax, ecx
add al, 0xe4
mov byte [esp + ebx + 0x28], al
mov eax, ebx
and eax, 1
xor ebx, 1
lea ebx, [ebx + eax*2]
cmp ebx, 0x2f
jb 0x40a760
mov eax, dword [esp + 0x20]
add dword [esp + 0x10], eax
mov word [esp], 0xb4b5
mov byte [esp + 2], 0x9e
mov word [esp + 3], 0
mov byte [esp + 5], 0
xor edi, edi
nop
movzx ebx, byte [esp + edi]
lea ebp, [edi + 0x7733ea5a]
mov eax, ebp
and eax, ebx
lea ecx, [edi + ebx]
add ecx, 0x7733ea5a
not ecx
lea eax, [ecx + eax*2]
and eax, ebp
add eax, eax
mov ecx, 0x88cc15a5
sub ecx, edi
and ecx, eax
not eax
and eax, ebp
sub eax, ecx
mov ebp, 0x42
sub ebp, eax
sub ebp, ebx
add ebx, eax
add ebx, 0x3d
and ebp, 0x79
and ebx, 0x86
sub ebx, ebp
add bl, 0x7a
mov byte [esp + edi], bl
mov eax, edi
or eax, 0x26d38112
and edi, 2
add edi, eax
add edi, 0xd92c7eef
cmp edi, 6
jb 0x40a7b0
movzx ebx, byte [esp]
mov ecx, dword [esp + 0x10]
mov edi, ecx
test bl, bl
je 0x40a83c
lea ebp, [esp + 1]
mov edi, ecx
nop
nop
nop
nop
nop
nop
nop
mov byte [edi], bl
inc edi
movzx ebx, byte [ebp]
inc ebp
test bl, bl
jne 0x40a830
mov byte [edi], 0
mov eax, dword [esp + 0x24]
movzx ebx, byte [eax + 0x60]
test bl, bl
je 0x40a85c
lea ebp, [eax + 0x61]
nop
nop
mov byte [edi], bl
inc edi
movzx ebx, byte [ebp]
inc ebp
test bl, bl
jne 0x40a850
mov byte [edi], 0
movzx ebx, byte [esp + 0x28]
test bl, bl
je 0x40a87c
lea ebp, [esp + 0x29]
nop
nop
nop
nop
mov byte [edi], bl
inc edi
movzx ebx, byte [ebp]
inc ebp
test bl, bl
jne 0x40a870
mov byte [edi], 0
movzx ebx, byte [esi]
test bl, bl
je 0x40a89b
inc esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edi], bl
inc edi
movzx ebx, byte [esi]
inc esi
test bl, bl
jne 0x40a890
mov byte [edi], 0
movzx ebx, byte [esp + 0x14]
test bl, bl
je 0x40a8bb
lea esi, [esp + 0x15]
nop
nop
nop
nop
nop
mov byte [edi], bl
inc edi
movzx ebx, byte [esi]
inc esi
test bl, bl
jne 0x40a8b0
mov byte [edi], 0
movzx ebx, byte [edx]
test bl, bl
je 0x40a8db
inc edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edi], bl
inc edi
movzx ebx, byte [edx]
inc edx
test bl, bl
jne 0x40a8d0
mov byte [edi], 0
movzx edx, byte [esp + 8]
test dl, dl
je 0x40a8fb
lea esi, [esp + 9]
nop
nop
nop
nop
nop
mov byte [edi], dl
inc edi
movzx edx, byte [esi]
inc esi
test dl, dl
jne 0x40a8f0
mov byte [edi], 0
sub edi, ecx
add dword [eax + 0x80], edi
add esp, 0x58
pop esi
pop edi
pop ebx
pop ebp
ret 0xc