Function at 0x4235e0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x150
cmp byte [ebp + 0x18], 0
je 0x42369e
mov edi, dword [ebp + 0x10]
mov esi, dword [ebp + 8]
lea ebx, [esp + 0x28]
push 0x120
push 0
push ebx
call fcn.0040c610
add esp, 0xc
mov ecx, esi
push 0
push 0
push 0x120
push ebx
push edi
push dword [ebp + 0xc]
call fcn.0043fbd0
xor ebx, ebx
test eax, eax
js 0x423b6c
mov dword [esp + 4], 0x9e918492
mov byte [esp + 8], 0x20
mov dword [esp + 9], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 4]
mov esi, ebx
and esi, 0x12
mov edx, eax
xor edx, 0xfa92f09
add edx, esi
mov esi, ecx
and esi, edx
add esi, esi
sub edx, esi
add dl, cl
add dl, 0xd3
mov byte [esp + eax + 4], dl
inc eax
add ebx, 2
cmp eax, 9
jne 0x423650
cmp byte [esp + 0x47], 0
js 0x4236a5
lea eax, [esp + 0x30]
lea ecx, [esp + 4]
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405b90
add esp, 0xc
mov bl, 1
jmp 0x4236f8
xor ebx, ebx
jmp 0x423b6c
mov esi, dword [esp + 0x30]
mov ebx, dword [esp + 0x34]
mov eax, esi
or eax, ebx
je 0x4236f6
mov edi, dword [esp + 0x38]
inc edi
push edi
call fcn.0040c590
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push edi
mov edi, eax
push eax
push ebx
push esi
call fcn.0043fbd0
test eax, eax
setns bl
js 0x4236eb
lea eax, [esp + 4]
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405b90
add esp, 0xc
push edi
call fcn.0040c5a0
add esp, 4
jmp 0x4236f8
xor ebx, ebx
mov dword [esp + 4], 0xd2e6fcce
mov word [esp + 8], 0x5fe3
mov dword [esp + 0xa], 0
mov byte [esp + 0xe], 0
mov eax, 0xdf3e8fef
mov ecx, 0x10
nop
nop
movzx esi, byte [esp + eax + 0x20c17015]
mov edx, ecx
xor edx, eax
and edx, esi
xor edx, eax
mov esi, edx
and esi, 1
mov edi, 1
sub edi, edx
and edi, 1
and edx, 0xfe
or edx, edi
lea edx, [edx + esi*2]
add dl, 0x54
mov byte [esp + eax + 0x20c17015], dl
inc eax
dec ecx
cmp eax, 0xdf3e8ffa
jne 0x423720
mov esi, ebx
cmp byte [esp + 0x127], 0
js 0x423785
lea eax, [esp + 0x110]
lea ecx, [esp + 4]
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405b90
add esp, 0xc
mov bl, 1
jmp 0x4237e8
mov ecx, dword [esp + 0x110]
mov ebx, dword [esp + 0x114]
mov eax, ecx
or eax, ebx
je 0x4237e6
mov edi, dword [esp + 0x118]
inc edi
push edi
mov dword [esp + 0x18], ecx
call fcn.0040c590
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push edi
mov edi, eax
push eax
push ebx
push dword [esp + 0x28]
call fcn.0043fbd0
test eax, eax
setns bl
js 0x4237db
lea eax, [esp + 4]
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405b90
add esp, 0xc
push edi
call fcn.0040c5a0
add esp, 4
jmp 0x4237e8
xor ebx, ebx
mov eax, esi
and al, bl
mov ebx, eax
mov dword [esp + 4], 0x5073a34
mov dword [esp + 8], 0x23d3229
mov byte [esp + 0xc], 0x84
mov dword [esp + 0xd], 0
mov byte [esp + 0x11], 0
mov eax, 0xf3370963
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0xcc8f6a1]
mov edx, ecx
and edx, eax
add dl, dl
sub cl, dl
movzx ecx, cl
add ecx, eax
add cl, 0x11
mov byte [esp + eax + 0xcc8f6a1], cl
inc eax
cmp eax, 0xf3370971
jne 0x423820
cmp byte [esp + 0x5f], 0
js 0x42386a
lea eax, [esp + 0x48]
lea ecx, [esp + 4]
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405b90
add esp, 0xc
mov edi, 1
jmp 0x4238c9
mov esi, dword [esp + 0x48]
mov edi, dword [esp + 0x4c]
mov eax, esi
or eax, edi
je 0x4238c7
mov dword [esp + 0x14], ebx
mov ebx, dword [esp + 0x50]
inc ebx
push ebx
call fcn.0040c590
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push ebx
mov ebx, eax
push eax
push edi
push esi
call fcn.0043fbd0
mov edi, eax
test eax, eax
js 0x4238b3
lea eax, [esp + 4]
push ebx
push eax
push dword [ebp + 0x14]
call fcn.00405b90
add esp, 0xc
push ebx
call fcn.0040c5a0
add esp, 4
not edi
shr edi, 0x1f
mov ebx, dword [esp + 0x14]
jmp 0x4238c9
xor edi, edi
movzx esi, bl
not esi
or edi, esi
mov dword [esp + 4], 0xa1aebcb4
mov byte [esp + 8], 0xd8
mov dword [esp + 9], 0
mov dword [esp + 0xc], 0
mov eax, 0xc9a2f84f
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0x365d07b5]
xor ecx, eax
mov edx, ecx
xor edx, 0x3289bfa1
and ecx, 0xc922405e
add ecx, ecx
sub ecx, edx
mov edx, ecx
and edx, 0x74
xor ecx, 0x74
lea ecx, [ecx + edx*2]
add cl, 0xa2
mov byte [esp + eax + 0x365d07b5], cl
inc eax
cmp eax, 0xc9a2f85b
jne 0x423900
cmp byte [esp + 0x77], 0
js 0x423959
lea eax, [esp + 0x60]
lea ecx, [esp + 4]
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405b90
add esp, 0xc
mov bl, 1
jmp 0x4239c2
mov ecx, dword [esp + 0x60]
mov edx, dword [esp + 0x64]
mov eax, ecx
or eax, edx
je 0x4239c0
mov ebx, dword [esp + 0x68]
inc ebx
push ebx
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x20], edx
call fcn.0040c590
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push ebx
mov dword [esp + 0x20], eax
push eax
push dword [esp + 0x2c]
push dword [esp + 0x2c]
call fcn.0043fbd0
test eax, eax
setns bl
js 0x4239b2
lea eax, [esp + 4]
push dword [esp + 0x14]
push eax
push dword [ebp + 0x14]
call fcn.00405b90
add esp, 0xc
push dword [esp + 0x14]
call fcn.0040c5a0
add esp, 4
jmp 0x4239c2
xor ebx, ebx
cmp edi, esi
setne dl
mov eax, dword [esp + 0x128]
mov ecx, dword [esp + 0x12c]
mov dword [esp + 4], 0xe6eaf39f
mov dword [esp + 8], 0xdcebe4ee
mov dword [esp + 0xc], 0x71d7e7f7
mov word [esp + 0x10], 0
and dl, bl
mov dword [esp + 0x14], edx
mov edx, 0xe03edbf
nop
movzx ebx, byte [esp + edx - 0xe03edbb]
xor ebx, edx
mov esi, 0x57
sub esi, ebx
add ebx, 0xa8
and esi, 0x63
and ebx, 0x9c
sub ebx, esi
mov byte [esp + edx - 0xe03edbb], bl
inc edx
cmp edx, 0xe03edcd
jne 0x423a00
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], ecx
fild qword [esp + 0x20]
sub esp, 0x10
lea eax, [esp + 0x14]
mov dword [esp + 4], eax
mov eax, dword [ebp + 0x14]
mov dword [esp], eax
fstp qword [esp + 8]
call fcn.00405be0
add esp, 0x10
mov dword [esp + 0x18], eax
movzx esi, byte [esp + 0x80]
mov dword [esp + 4], 0x58ad5e51
mov dword [esp + 8], 0x5557aaa9
mov word [esp + 0xc], 0xc1a5
mov dword [esp + 0xe], 0
mov edi, 0xd2
nop
nop
nop
nop
nop
movzx ebx, byte [esp + edi - 0xce]
mov edx, ebx
and edx, edi
mov eax, edx
or al, 0xfd
inc al
mov ecx, edx
and cl, 0xfd
mul cl
mov ecx, eax
add cl, bl
mov eax, edx
shr al, 1
and al, 1
or dl, 2
mul dl
add al, al
sub cl, al
movzx eax, cl
add eax, edi
add al, 0xe6
mov byte [esp + edi - 0xce], al
inc edi
cmp edi, 0xe0
jne 0x423a90
push esi
lea eax, [esp + 8]
push eax
push dword [ebp + 0x14]
call fcn.00405c70
add esp, 0xc
mov edi, eax
movzx esi, byte [esp + 0x81]
mov dword [esp + 4], 0x73767578
mov dword [esp + 8], 0x7b787a4b
mov dword [esp + 0xc], 0xd951
mov byte [esp + 0x10], 0
or edi, dword [esp + 0x18]
mov ecx, 0xa1a7a2d8
mov edx, 0x5e585d27
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [esp + ecx + 0x5e585d2c]
mov ebx, ecx
and ebx, eax
add ebx, ebx
sub ebx, eax
add ebx, edx
and ebx, ecx
add bl, bl
sub al, bl
movzx eax, al
add eax, ecx
add al, 0xc8
mov byte [esp + ecx + 0x5e585d2c], al
inc ecx
dec edx
cmp ecx, 0xa1a7a2e5
jne 0x423b20
push esi
lea eax, [esp + 8]
push eax
push dword [ebp + 0x14]
call fcn.00405c70
add esp, 0xc
or edi, eax
sete al
mov ebx, dword [esp + 0x14]
and bl, al
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret