Function at 0x4235d0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x148
cmp byte [ebp + 0x18], 0
je 0x4236d7
mov edi, dword [ebp + 0x10]
mov esi, dword [ebp + 8]
lea ebx, [esp + 0x20]
push 0x120
push 0
push ebx
call fcn.0040cbe0
add esp, 0xc
mov ecx, esi
push 0
push 0
push 0x120
push ebx
push edi
push dword [ebp + 0xc]
call fcn.00441650
test eax, eax
js 0x4236d7
mov dword [esp], 0xd6e1ece2
mov byte [esp + 4], 0xb0
mov dword [esp + 5], 0
mov word [esp + 9], 0
mov eax, 0x1610d21d
mov ecx, 0xe9ef2de2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, ecx
and esi, 0xe10e2cea
mov edx, eax
and edx, 0x15
or edx, esi
lea edi, [ecx + 0x40000000]
and edi, 0x282408cc
mov esi, eax
and esi, 0x4100233
or esi, edi
xor edx, 0x8e10115
xor esi, 0xc5db2733
and esi, edx
lea edi, [esi + esi]
not edi
add edi, esi
movzx edx, byte [esp + eax - 0x1610d21d]
and edi, edx
or edx, eax
xor edx, edi
mov esi, edx
and esi, 1
or edx, 1
add edx, esi
add dl, 0x6e
mov byte [esp + eax - 0x1610d21d], dl
inc eax
dec ecx
cmp eax, 0x1610d228
jne 0x423650
cmp byte [esp + 0x3f], 0
js 0x4236de
lea eax, [esp + 0x28]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00406110
add esp, 0xc
mov al, 1
mov dword [esp + 0x10], eax
jmp 0x423739
xor eax, eax
jmp 0x423b02
mov ebx, dword [esp + 0x28]
mov esi, dword [esp + 0x2c]
mov eax, ebx
or eax, esi
je 0x423731
mov edi, dword [esp + 0x30]
inc edi
push edi
call fcn.0040cb60
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push edi
mov edi, eax
push eax
push esi
push ebx
call fcn.00441650
test eax, eax
setns al
mov dword [esp + 0x10], eax
js 0x423726
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.00406110
add esp, 0xc
push edi
call fcn.0040cb70
add esp, 4
jmp 0x423739
mov dword [esp + 0x10], 0
mov dword [esp], 0xaab2b8a2
mov word [esp + 4], 0x1db9
mov dword [esp + 6], 0
mov eax, 0x506009ba
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax - 0x506009ba]
mov edx, ecx
and edx, eax
add dl, dl
sub cl, dl
movzx ecx, cl
add ecx, eax
add cl, 0x5e
mov byte [esp + eax - 0x506009ba], cl
inc eax
cmp eax, 0x506009c4
jne 0x423760
cmp byte [esp + 0x11f], 0
js 0x4237ab
lea eax, [esp + 0x108]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00406110
add esp, 0xc
mov bl, 1
jmp 0x423805
mov ebx, dword [esp + 0x108]
mov esi, dword [esp + 0x10c]
mov eax, ebx
or eax, esi
je 0x423803
mov edi, dword [esp + 0x110]
inc edi
push edi
call fcn.0040cb60
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push edi
mov edi, eax
push eax
push esi
push ebx
call fcn.00441650
test eax, eax
setns bl
js 0x4237f8
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.00406110
add esp, 0xc
push edi
call fcn.0040cb70
add esp, 4
jmp 0x423805
xor ebx, ebx
mov eax, dword [esp + 0x10]
and al, bl
mov dword [esp + 0x10], eax
mov dword [esp], 0x65676a14
mov dword [esp + 4], 0x620d7219
mov byte [esp + 8], 0xe4
mov dword [esp + 9], 0
mov word [esp + 0xd], 0
mov eax, 0x2b
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax - 0x2b]
mov edx, ecx
and edx, eax
add dl, dl
sub cl, dl
movzx ecx, cl
add ecx, eax
add cl, 0x29
mov byte [esp + eax - 0x2b], cl
inc eax
cmp eax, 0x3a
jne 0x423840
cmp byte [esp + 0x57], 0
js 0x42387d
lea eax, [esp + 0x40]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00406110
add esp, 0xc
mov bl, 1
jmp 0x4238ce
mov ebx, dword [esp + 0x40]
mov esi, dword [esp + 0x44]
mov eax, ebx
or eax, esi
je 0x4238cc
mov edi, dword [esp + 0x48]
inc edi
push edi
call fcn.0040cb60
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push edi
mov edi, eax
push eax
push esi
push ebx
call fcn.00441650
test eax, eax
setns bl
js 0x4238c1
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.00406110
add esp, 0xc
push edi
call fcn.0040cb70
add esp, 4
jmp 0x4238ce
xor ebx, ebx
mov eax, dword [esp + 0x10]
and al, bl
mov dword [esp + 0x10], eax
mov dword [esp], 0x99aa8494
mov byte [esp + 4], 0x20
mov dword [esp + 5], 0
mov byte [esp + 9], 0
mov eax, 0x6f301b89
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax - 0x6f301b89]
mov edx, eax
and edx, ecx
add edx, edx
sub ecx, edx
add ecx, eax
mov edx, ecx
and edx, 1
xor ecx, 1
lea ecx, [ecx + edx*2]
add cl, 0x52
mov byte [esp + eax - 0x6f301b89], cl
inc eax
cmp eax, 0x6f301b93
jne 0x423900
cmp byte [esp + 0x6f], 0
js 0x42394d
lea eax, [esp + 0x58]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00406110
add esp, 0xc
mov bl, 1
jmp 0x42399e
mov ebx, dword [esp + 0x58]
mov esi, dword [esp + 0x5c]
mov eax, ebx
or eax, esi
je 0x42399c
mov edi, dword [esp + 0x60]
inc edi
push edi
call fcn.0040cb60
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push edi
mov edi, eax
push eax
push esi
push ebx
call fcn.00441650
test eax, eax
setns bl
js 0x423991
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.00406110
add esp, 0xc
push edi
call fcn.0040cb70
add esp, 4
jmp 0x42399e
xor ebx, ebx
mov eax, dword [esp + 0x10]
and al, bl
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x120]
mov dword [esp + 0x14], eax
mov ecx, dword [esp + 0x124]
mov dword [esp], 0xdedac3d7
mov dword [esp + 4], 0xa4cbdcc6
mov dword [esp + 8], 0x41dfcfcf
mov word [esp + 0xc], 0
mov edx, esp
xor eax, eax
xor edi, edi
nop
nop
mov esi, eax
and esi, 0xda
mov ebx, edi
xor ebx, 0x12
sub ebx, esi
inc bl
xor bl, byte [edx]
add bl, 0xa1
mov byte [edx], bl
inc edx
dec edi
add eax, 0xfffffffe
cmp edi, 0xfffffff2
jne 0x4239e0
mov eax, dword [esp + 0x14]
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], ecx
fild qword [esp + 0x18]
sub esp, 0x10
lea esi, [esp + 0x10]
mov dword [esp + 4], esi
mov eax, dword [ebp + 0x14]
mov dword [esp], eax
fstp qword [esp + 8]
call fcn.00406160
add esp, 0x10
mov edi, eax
movzx eax, byte [esp + 0x78]
mov dword [esp], 0x43f0a07
mov dword [esp + 4], 0x7053637
mov word [esp + 8], 0x9733
mov dword [esp + 0xa], 0
mov byte [esp + 0xe], 0
xor ecx, ecx
nop
nop
nop
nop
nop
mov edx, ecx
add dl, 0xa5
xor dl, byte [esp + ecx]
add dl, 0xc7
mov byte [esp + ecx], dl
inc ecx
cmp ecx, 0xf
jne 0x423a60
push eax
push esi
push dword [ebp + 0x14]
call fcn.004061f0
add esp, 0xc
mov esi, eax
movzx eax, byte [esp + 0x79]
mov dword [esp], 0xf9feffcc
mov dword [esp + 4], 0xc1fcfec9
mov dword [esp + 8], 0x53f3
or esi, edi
mov ecx, 0x8e6a5717
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx + 0x7195a8e9]
xor edx, ecx
mov edi, edx
not edi
or edi, 0x8c
mov ebx, edx
and ebx, 0x8c
sub edi, ebx
lea edx, [edi + edx*2]
add dl, 0x8e
mov byte [esp + ecx + 0x7195a8e9], dl
inc ecx
cmp ecx, 0x8e6a5723
jne 0x423ab0
push eax
lea eax, [esp + 4]
push eax
push dword [ebp + 0x14]
call fcn.004061f0
add esp, 0xc
or esi, eax
sete al
mov ecx, dword [esp + 0x10]
and cl, al
mov eax, ecx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret