Function at 0x408e40
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x44
mov edx, dword [esp + 0x60]
mov esi, dword [esp + 0x5c]
mov dword [esp + 0x10], ecx
mov eax, dword [ecx + 0x80]
mov dword [esp + 0xc], eax
mov dword [esp + 2], 0x1d0a0714
xor ebp, ebp
mov al, 1
nop
nop
nop
nop
nop
nop
nop
movzx edi, word [esp + ebp*2 + 2]
lea ebx, [ebp + 0x4fa8b501]
lea ecx, [ebp + 0xb501]
and ecx, edi
or ebx, edi
xor ebx, ecx
mov ecx, ebx
not ecx
add ebx, 0x82ba57f7
or ecx, ebx
and ecx, 1
or ebx, 1
xor ebx, ecx
lea ecx, [ebx + ecx*2]
mov word [esp + ebp*2 + 2], cx
mov ebp, 1
xor ebx, ebx
test al, 1
mov eax, 0
jne 0x408e70
mov dword [esp + 6], 0xb10fb166
mov word [esp + 0xa], 0xce0c
mov ebp, 0x287588db
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, word [esp + ebx*2 + 6]
lea ecx, [ebx + 0x578a7724]
mov eax, ecx
and eax, edi
add eax, eax
xor ecx, eax
and eax, ebp
add eax, eax
sub eax, ecx
mov ecx, eax
xor ecx, edi
not eax
and eax, edi
add eax, eax
sub eax, ecx
add eax, 0x46e0
mov word [esp + ebx*2 + 6], ax
inc ebx
dec ebp
cmp ebx, 3
jne 0x408ed0
mov dword [esp + 0x1a], 0x2dee9021
mov dword [esp + 0x1e], 0x2c8a2a80
mov dword [esp + 0x22], 0x37f57384
mov dword [esp + 0x26], 0x299c2e81
mov dword [esp + 0x2a], 0x2d9c2a9d
mov dword [esp + 0x2e], 0x34d76098
mov dword [esp + 0x32], 0x73942897
mov dword [esp + 0x36], 0x3f8f3f9e
mov dword [esp + 0x3a], 0x3f937ec7
mov dword [esp + 0x3e], 0x78c23b93
mov word [esp + 0x42], 0x9e00
mov eax, 0x3d1a7c4c
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, word [esp + eax*2 - 0x7a34f87e]
xor ecx, eax
add ecx, 0x172c1d9f
mov edi, ecx
and edi, 1
xor ecx, 1
lea ecx, [ecx + edi*2]
mov word [esp + eax*2 - 0x7a34f87e], cx
inc eax
cmp eax, 0x3d1a7c61
jne 0x408f70
mov ebp, dword [esp + 0x58]
add ebp, dword [esp + 0xc]
mov dword [esp + 0x16], 0x2d2d
xor eax, eax
mov edi, ebp
test al, al
jne 0x408fcb
mov bl, 0x2d
lea eax, [esp + 0x17]
mov edi, ebp
nop
nop
nop
nop
nop
mov byte [edi], bl
inc edi
movzx ebx, byte [eax]
inc eax
test bl, bl
jne 0x408fc0
mov byte [edi], 0
mov ecx, dword [esp + 0x10]
movzx eax, byte [ecx + 0x60]
test al, al
je 0x408feb
lea ebx, [ecx + 0x61]
nop
nop
nop
mov byte [edi], al
inc edi
movzx eax, byte [ebx]
inc ebx
test al, al
jne 0x408fe0
mov byte [edi], 0
movzx eax, byte [esp + 0x1a]
test al, al
je 0x40900b
lea ebx, [esp + 0x1b]
nop
nop
nop
nop
nop
mov byte [edi], al
inc edi
movzx eax, byte [ebx]
inc ebx
test al, al
jne 0x409000
mov byte [edi], 0
movzx eax, byte [esi]
test al, al
je 0x40902b
inc esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edi], al
inc edi
movzx eax, byte [esi]
inc esi
test al, al
jne 0x409020
mov byte [edi], 0
movzx eax, byte [esp + 6]
test al, al
je 0x40904b
lea esi, [esp + 7]
nop
nop
nop
nop
nop
mov byte [edi], al
inc edi
movzx eax, byte [esi]
inc esi
test al, al
jne 0x409040
mov byte [edi], 0
movzx eax, byte [edx]
test al, al
je 0x40906b
inc edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edi], al
inc edi
movzx eax, byte [edx]
inc edx
test al, al
jne 0x409060
mov byte [edi], 0
movzx eax, byte [esp + 2]
test al, al
je 0x40908b
lea edx, [esp + 3]
nop
nop
nop
nop
nop
mov byte [edi], al
inc edi
movzx eax, byte [edx]
inc edx
test al, al
jne 0x409080
mov byte [edi], 0
sub edi, ebp
add dword [ecx + 0x80], edi
add esp, 0x44
pop esi
pop edi
pop ebx
pop ebp
ret 0xc