Function at 0x4230e0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x150
mov ecx, dword [ebp + 8]
xor eax, eax
cmp byte [ebp + 0x18], 0
setne al
lea eax, [eax*8 + 0x120]
lea edx, [esp + 0x24]
push 0
push 0
push eax
push edx
push dword [ebp + 0x10]
push dword [ebp + 0xc]
call fcn.0043eeb0
test eax, eax
js 0x4231ae
mov dword [esp], 0x1e110412
mov byte [esp + 4], 0x60
mov dword [esp + 5], 0
mov esi, 0x1b11af69
mov edi, 0xe4ee5096
nop
nop
nop
movzx ebx, byte [esp + esi - 0x1b11af69]
mov edx, esi
and edx, ebx
add edx, edx
sub edx, ebx
add edx, edi
and edx, esi
mov eax, edx
or al, 0xfd
inc al
mov ecx, edx
and cl, 0x7d
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, esi
add al, 0xf3
mov byte [esp + esi - 0x1b11af69], al
inc esi
dec edi
cmp esi, 0x1b11af72
jne 0x423140
cmp byte [esp + 0x43], 0
js 0x4231b5
lea eax, [esp + 0x2c]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405e20
add esp, 0xc
mov al, 1
mov dword [esp + 0x10], eax
jmp 0x423210
xor ebx, ebx
jmp 0x42359a
mov esi, dword [esp + 0x2c]
mov ebx, dword [esp + 0x30]
mov eax, esi
or eax, ebx
je 0x423208
mov edi, dword [esp + 0x34]
inc edi
push edi
call fcn.0040c880
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.0043eeb0
test eax, eax
setns al
mov dword [esp + 0x10], eax
js 0x4231fd
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405e20
add esp, 0xc
push edi
call fcn.0040c890
add esp, 4
jmp 0x423210
mov dword [esp + 0x10], 0
movzx eax, byte [ebp + 0x18]
movzx eax, al
mov dword [esp + 0x14], eax
lea eax, [eax*8 + 0xe8]
mov dword [esp], 0x5e52645a
mov dword [esp + 4], 0xc36f
mov ecx, 0x9fcef831
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx + 0x603107cf]
xor edx, ecx
mov esi, edx
and esi, 1
or edx, 1
add edx, esi
add dl, 0xa
mov byte [esp + ecx + 0x603107cf], dl
inc ecx
cmp ecx, 0x9fcef839
jne 0x423240
lea ecx, [esp + eax]
add ecx, 0x24
cmp byte [esp + eax + 0x3b], 0
js 0x423288
mov eax, esp
push ecx
push eax
mov esi, dword [ebp + 0x14]
push esi
call fcn.00405e20
add esp, 0xc
mov bl, 1
jmp 0x4232d9
mov ebx, dword [ecx]
mov esi, dword [ecx + 4]
mov eax, ebx
or eax, esi
je 0x4232d4
mov edi, dword [ecx + 8]
inc edi
push edi
call fcn.0040c880
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.0043eeb0
test eax, eax
setns bl
mov esi, dword [ebp + 0x14]
js 0x4232c9
mov eax, esp
push edi
push eax
push esi
call fcn.00405e20
add esp, 0xc
push edi
call fcn.0040c890
add esp, 4
jmp 0x4232d9
xor ebx, ebx
mov esi, dword [ebp + 0x14]
mov edx, dword [esp + 0x10]
and dl, bl
mov dword [esp], 0x97919e98
mov dword [esp + 4], 0xae839e8b
mov byte [esp + 8], 0x38
mov dword [esp + 9], 0
mov word [esp + 0xd], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0x88
xor cl, byte [esp + eax]
add cl, 0x58
mov byte [esp + eax], cl
inc eax
cmp eax, 0xf
jne 0x423310
cmp byte [esp + 0x5b], 0
js 0x423344
lea eax, [esp + 0x44]
mov ecx, esp
push eax
push ecx
push esi
mov edi, edx
call fcn.00405e20
mov edx, edi
add esp, 0xc
mov bl, 1
jmp 0x4233a1
mov ebx, dword [esp + 0x44]
mov esi, dword [esp + 0x48]
mov eax, ebx
or eax, esi
je 0x42339c
mov dword [esp + 0x10], edx
mov edi, dword [esp + 0x4c]
inc edi
push edi
call fcn.0040c880
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.0043eeb0
test eax, eax
setns bl
mov esi, dword [ebp + 0x14]
js 0x42338d
mov eax, esp
push edi
push eax
push esi
call fcn.00405e20
add esp, 0xc
push edi
call fcn.0040c890
add esp, 4
mov edx, dword [esp + 0x10]
jmp 0x4233a1
xor ebx, ebx
mov esi, dword [ebp + 0x14]
and dl, bl
mov dword [esp], 0x212e5c14
mov byte [esp + 4], 0xb8
mov word [esp + 5], 0
mov byte [esp + 7], 0
xor eax, eax
nop
nop
nop
mov ecx, eax
add cl, 0x5f
xor cl, byte [esp + eax]
add cl, 0x25
mov byte [esp + eax], cl
inc eax
cmp eax, 8
jne 0x4233c0
cmp byte [esp + 0x73], 0
js 0x4233f4
lea eax, [esp + 0x5c]
mov ecx, esp
push eax
push ecx
push esi
mov edi, edx
call fcn.00405e20
mov edx, edi
add esp, 0xc
mov bl, 1
jmp 0x423451
mov ebx, dword [esp + 0x5c]
mov esi, dword [esp + 0x60]
mov eax, ebx
or eax, esi
je 0x42344c
mov dword [esp + 0x10], edx
mov edi, dword [esp + 0x64]
inc edi
push edi
call fcn.0040c880
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.0043eeb0
test eax, eax
setns bl
mov esi, dword [ebp + 0x14]
js 0x42343d
mov eax, esp
push edi
push eax
push esi
call fcn.00405e20
add esp, 0xc
push edi
call fcn.0040c890
add esp, 4
mov edx, dword [esp + 0x10]
jmp 0x423451
xor ebx, ebx
mov esi, dword [ebp + 0x14]
and dl, bl
mov edi, edx
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + ecx*8 + 0x124]
mov ecx, dword [esp + ecx*8 + 0x128]
mov dword [esp], 0xa0e173b
mov dword [esp + 4], 0x34073402
mov dword [esp + 8], 0x89330303
mov word [esp + 0xc], 0
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ebx, edx
add bl, 0xe5
xor bl, byte [esp + edx]
add bl, 0x87
mov byte [esp + edx], bl
inc edx
cmp edx, 0xe
jne 0x423490
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], ecx
fild qword [esp + 0x18]
sub esp, 0x10
lea eax, [esp + 0x10]
mov dword [esp + 4], eax
mov dword [esp], esi
fstp qword [esp + 8]
call fcn.00405e70
add esp, 0x10
test eax, eax
sete cl
movzx eax, byte [esp + 0x7c]
mov dword [esp], 0xa4bba6ab
mov dword [esp + 4], 0x5b5d4ab3
mov dword [esp + 8], 0xe34f
mov edx, edi
and dl, cl
mov edi, edx
xor ecx, ecx
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, ecx
and esi, 0x16
mov ebx, edx
xor ebx, 0xfb
add ebx, esi
xor bl, byte [esp + edx]
add bl, 0x19
mov byte [esp + edx], bl
inc edx
add ecx, 2
cmp edx, 0xc
jne 0x423500
push eax
lea eax, [esp + 4]
push eax
mov esi, dword [ebp + 0x14]
push esi
call fcn.00405f00
add esp, 0xc
test eax, eax
setne bl
mov ecx, edi
xor bl, cl
movzx eax, byte [esp + 0x7d]
mov dword [esp], 0xa9a6a7b4
mov dword [esp + 4], 0xd1d4d6b9
mov word [esp + 8], 0x63e3
mov dword [esp + 0xa], 0
and bl, cl
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, ecx
add dl, 0x3b
xor dl, byte [esp + ecx]
add dl, 0xd9
mov byte [esp + ecx], dl
inc ecx
cmp ecx, 0xe
jne 0x423570
push eax
lea eax, [esp + 4]
push eax
push esi
call fcn.00405f00
add esp, 0xc
test eax, eax
sete al
and bl, al
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret