Function at 0x429da1
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x10c
movsx eax, word [0x438c00]
push ebx
push esi
push edi
push eax
mov dword [ebp - 8], edx
mov dword [ebp - 0xc], ecx
push 0xa26bffff
call fcn.004100c8
add dword [0x438c24], eax
push 0x663ffff
push 0x978bffff
call fcn.00410167
add dword [0x438c08], eax
movsx eax, word [0x438bf2]
push eax
push 0xc61bffff
call fcn.00410246
movsx ecx, byte [0x438bec]
movsx edx, byte [0x438bf0]
and ecx, edx
add esp, 0x18
add dword [0x438c2c], ecx
xor ecx, ecx
mov ebx, 0x100
mov byte [ebp + ecx - 0x10c], cl
inc ecx
cmp ecx, ebx
jb 0x429e12
test al, al
setne al
mov byte [0x438beb], al
and byte [ebp - 2], 0
movsx eax, byte [0x438bee]
and byte [ebp - 1], 0
or word [0x438bfc], 0xffff
and byte [ebp - 3], 0
push eax
movsx eax, word [0x438c04]
push eax
call fcn.004100f9
push dword [0x438c14]
add byte [0x438be8], al
push 0xfc31ffff
call fcn.00410092
mov dword [0x438c20], eax
mov ax, word [0x438bf2]
add esp, 0x10
inc ax
mov word [0x438bf8], ax
xor edi, edi
movsx eax, word [0x438c02]
push 0x501ffff
push eax
call fcn.004100f9
mov dword [0x438c1c], eax
push 0xf457ffff
movsx eax, word [0x438bfe]
push eax
call fcn.00410285
add esp, 0x10
dec eax
mov word [0x438bfe], ax
mov eax, edi
xor edx, edx
lea esi, [ebp + edi - 0x10c]
div dword [ebp - 8]
mov eax, dword [ebp - 0xc]
mov al, byte [edx + eax]
add al, byte [esi]
add byte [ebp - 3], al
call dword [sym.imp.USER32.dll_GetCapture]
mov dword [0x438c08], eax
push dword [0x438c1c]
push dword [0x438c24]
call fcn.0041003a
mov dword [0x438c08], eax
movsx eax, word [0x438bf4]
push eax
push 0x7933ffff
call fcn.004100c8
add word [0x438bfc], ax
mov cl, byte [esi]
movzx eax, byte [ebp - 3]
mov dl, byte [ebp + eax - 0x10c]
lea eax, [ebp + eax - 0x10c]
mov byte [esi], dl
mov byte [eax], cl
movsx eax, byte [0x438bf1]
push eax
push 0xd99fffff
call fcn.0041020b
mov dword [0x438c28], eax
mov eax, dword [0x438c10]
sub eax, dword [0x438c1c]
add esp, 0x18
add dword [0x438c08], eax
inc edi
cmp edi, ebx
jb 0x429e7f
push dword [0x438c24]
push dword [0x438c0c]
call fcn.0041003a
add word [0x438bf4], ax
pop ecx
pop ecx
call dword [sym.imp.USER32.dll_GetActiveWindow]
add word [0x438bfe], ax
movsx eax, word [0x438bfa]
push 0xf557ffff
push eax
call fcn.004101be
add word [0x438bfa], ax
pop ecx
pop ecx
mov ecx, dword [ebp + 0x10]
test ecx, ecx
jbe 0x42a0aa
mov ebx, dword [ebp + 8]
mov eax, dword [ebp + 0xc]
sub eax, ebx
mov dword [ebp + 0x10], ecx
mov dword [ebp + 8], eax
call dword [sym.imp.USER32.dll_GetFocus]
add word [0x438c04], ax
push 0xba21ffff
push 0x3717ffff
call fcn.00410167
inc byte [ebp - 2]
mov dword [0x438c14], eax
movzx eax, byte [ebp - 2]
push 0x6abfffff
lea esi, [ebp + eax - 0x10c]
mov al, byte [ebp + eax - 0x10c]
add byte [ebp - 1], al
mov al, byte [0x438bf1]
dec al
add byte [0x438bf0], al
movsx eax, word [0x438c04]
push eax
call fcn.00410285
add dword [0x438c14], eax
mov ax, word [0x438bf2]
neg ax
mov word [0x438bfc], ax
movzx eax, byte [ebp - 1]
mov cl, byte [ebp + eax - 0x10c]
lea edi, [ebp + eax - 0x10c]
mov al, byte [esi]
mov byte [esi], cl
mov byte [edi], al
mov al, byte [0x438c28]
neg al
mov byte [0x438be8], al
movsx eax, byte [0x438bec]
push eax
push 0x98f1ffff
call fcn.0041020b
add dword [0x438c24], eax
push 0x4f81ffff
push dword [0x438c20]
call fcn.004100c8
add byte [0x438beb], al
mov al, byte [esi]
add al, byte [edi]
mov ecx, dword [ebp + 8]
add esp, 0x20
movzx eax, al
mov al, byte [ebp + eax - 0x10c]
xor al, byte [ecx + ebx]
mov byte [ebx], al
inc dword [0x438c10]
movsx ax, byte [0x438bf1]
or ax, word [0x438bf4]
add word [0x438bfa], ax
inc ebx
dec dword [ebp + 0x10]
jne 0x429fac
xor eax, eax
pop edi
cmp word [0x438bf4], ax
pop esi
pop ebx
jne 0x42a0c7
cmp word [0x438bf8], ax
mov word [0x438c04], ax
je 0x42a0d0
mov word [0x438c04], 1
push 0x3009ffff
push 0x9215ffff
call fcn.004100f9
add byte [0x438bf0], al
pop ecx
pop ecx
leave
ret 0xc