Function at 0x42998e
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x10c
movsx eax, word [0x437bf2]
push ebx
push esi
push edi
push eax
mov dword [ebp - 0xc], edx
mov dword [ebp - 8], ecx
push 0x8dcfffff
call fcn.004100bc
add dword [0x437c08], eax
push 0xca8bffff
push dword [0x437c28]
call fcn.0040fede
add esp, 0x10
mov byte [0x437be8], al
xor eax, eax
mov ebx, 0x100
mov byte [ebp + eax - 0x10c], al
inc eax
cmp eax, ebx
jb 0x4299d7
mov al, byte [0x437c00]
push 0x50d1ffff
dec al
push 0xc021ffff
add byte [0x437be9], al
call fcn.0040ffc6
push dword [0x437c28]
and byte [ebp - 2], 0
and byte [ebp - 3], 0
mov byte [0x437bed], al
push 0x6211ffff
call fcn.0040ff4b
add esp, 0x10
mov word [0x437bfc], ax
push 0xd707ffff
call dword [sym.imp.KERNEL32.dll_IsValidCodePage]
add dword [0x437c18], eax
and byte [ebp - 1], 0
push 0xd1d7ffff
push 0x67cfffff
call fcn.0040ffc6
push 0xce43ffff
push 0x2e37ffff
mov dword [0x437c10], eax
call fcn.0040fede
add esp, 0x10
mov dword [0x437c10], eax
xor edi, edi
movsx eax, word [0x437bfc]
push eax
push 0xdcb1ffff
call fcn.00410016
mov dword [0x437c08], eax
movsx eax, byte [0x437bed]
push eax
push 0x7a2dffff
call fcn.0040ffe3
add word [0x437bfa], ax
mov eax, edi
xor edx, edx
lea esi, [ebp + edi - 0x10c]
div dword [ebp - 0xc]
mov eax, dword [ebp - 8]
push 0x365bffff
push 0x6bd9ffff
mov al, byte [edx + eax]
add al, byte [esi]
add byte [ebp - 1], al
call fcn.00410092
mov byte [0x437bf1], al
dec word [0x437bf2]
movzx eax, byte [ebp - 1]
mov dl, byte [ebp + eax - 0x10c]
mov cl, byte [esi]
lea eax, [ebp + eax - 0x10c]
mov byte [esi], dl
push 0x20adffff
mov byte [eax], cl
push dword [0x437c24]
call fcn.00410092
add byte [0x437bec], al
add esp, 0x20
inc edi
mov dword [0x437c2c], 1
cmp edi, ebx
jb 0x429a67
mov ax, word [0x437c02]
mov ecx, dword [ebp + 0x10]
or ax, 1
push 0
mov word [0x437bf8], ax
pop eax
setne al
add dword [0x437c24], eax
test ecx, ecx
jbe 0x429c18
mov ebx, dword [ebp + 8]
mov eax, dword [ebp + 0xc]
sub eax, ebx
mov dword [ebp + 0x10], ecx
mov dword [ebp + 8], eax
push dword [0x437c14]
push 0xd05ffff
call fcn.0040ff78
add word [0x437bf4], ax
inc byte [ebp - 2]
movzx eax, byte [ebp - 2]
mov cl, byte [0x437c28]
or word [0x437c04], 0xffff
lea esi, [ebp + eax - 0x10c]
mov al, byte [ebp - 3]
and cl, byte [0x437c00]
push 0x896bffff
add al, byte [esi]
push 0xdf41ffff
mov byte [0x437be9], cl
mov cl, byte [0x437c20]
mov byte [ebp - 3], al
add byte [0x437bec], cl
movzx eax, al
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 [0x437bf8]
add byte [0x437bef], al
call fcn.0040ff78
add byte [0x437bee], al
mov al, byte [esi]
add al, byte [edi]
mov ecx, dword [ebp + 8]
push 0x97d1ffff
movzx eax, al
mov al, byte [ebp + eax - 0x10c]
xor al, byte [ecx + ebx]
mov byte [ebx], al
mov al, byte [0x437c18]
imul byte [0x437c1c]
mov byte [0x437beb], al
movsx eax, word [0x437bfc]
push eax
call fcn.00410016
add esp, 0x18
inc ebx
dec dword [ebp + 0x10]
mov byte [0x437bee], al
jne 0x429b44
movsx eax, byte [0x437beb]
push 0xd3c3ffff
push eax
call fcn.004100bc
pop ecx
mov word [0x437bfe], ax
movsx eax, byte [0x437be8]
pop ecx
pop edi
mov ecx, dword [0x437c14]
pop esi
pop ebx
lea eax, [ecx + eax - 0x68800001]
mov dword [0x437c14], eax
leave
ret 0xc