Function at 0x423a40
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x158
mov ecx, dword [ebp + 8]
xor eax, eax
cmp byte [ebp + 0x18], 0
setne al
lea eax, [eax*8 + 0x120]
lea edx, [esp + 0x2c]
push 0
push 0
push eax
push edx
push dword [ebp + 0x10]
push dword [ebp + 0xc]
call fcn.0043f520
xor ecx, ecx
test eax, eax
js 0x423fb6
mov ebx, dword [ebp + 0x14]
mov dword [esp + 4], 0x5e475046
mov byte [esp + 8], 0x3c
mov dword [esp + 9], 0
mov byte [esp + 0xd], 0
nop
nop
mov esi, ecx
movzx ecx, byte [esp + ecx + 4]
lea eax, [esi - 0x545b3a53]
mov edx, eax
and edx, 0x1a00187
xor eax, 0xd5f92987
lea eax, [eax + edx*2]
xor ecx, 0xd0925f04
and eax, 0x818da37f
xor eax, 0xd0821304
mov edx, ecx
and edx, eax
add eax, ecx
mov ecx, esi
add edx, edx
sub eax, edx
add al, 0xfc
mov byte [esp + esi + 4], al
mov eax, esi
and eax, 1
xor ecx, 1
lea ecx, [ecx + eax*2]
cmp ecx, 0xa
jb 0x423aa0
cmp byte [esp + 0x4b], 0
js 0x423b11
lea eax, [esp + 0x34]
lea ecx, [esp + 4]
push eax
push ecx
push ebx
call fcn.00406220
add esp, 0xc
mov al, 1
mov dword [esp + 0x14], eax
jmp 0x423b72
mov esi, dword [esp + 0x34]
mov ebx, dword [esp + 0x38]
mov eax, esi
or eax, ebx
je 0x423b67
mov edi, dword [esp + 0x3c]
inc edi
push edi
call fcn.0040cdd0
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.0043f520
test eax, eax
setns al
mov dword [esp + 0x14], eax
mov ebx, dword [ebp + 0x14]
js 0x423b5c
lea eax, [esp + 4]
push edi
push eax
push ebx
call fcn.00406220
add esp, 0xc
push edi
call fcn.0040cde0
add esp, 4
jmp 0x423b72
mov dword [esp + 0x14], 0
mov ebx, dword [ebp + 0x14]
movzx eax, byte [ebp + 0x18]
mov dword [esp + 0x1c], eax
lea esi, [eax*8 + 0xe8]
mov dword [esp + 4], 0xfee610fe
mov word [esp + 8], 0x6df1
mov dword [esp + 0xa], 0
mov byte [esp + 0xe], 0
mov ecx, 0x6c
mov edx, 0x93
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [esp + ecx - 0x68]
mov edi, ecx
or edi, eax
not eax
or eax, edx
and eax, edi
add al, 0xe4
mov byte [esp + ecx - 0x68], al
inc ecx
dec edx
cmp ecx, 0x77
jne 0x423bb0
lea ecx, [esp + esi]
add ecx, 0x2c
cmp byte [esp + esi + 0x43], 0
js 0x423bec
lea eax, [esp + 4]
push ecx
push eax
push ebx
call fcn.00406220
add esp, 0xc
mov cl, 1
jmp 0x423c44
mov edx, dword [ecx]
mov edi, dword [ecx + 4]
mov eax, edx
or eax, edi
je 0x423c42
mov esi, dword [ecx + 8]
inc esi
push esi
mov dword [esp + 0x1c], edx
call fcn.0040cdd0
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push esi
mov esi, eax
push eax
push edi
push dword [esp + 0x2c]
call fcn.0043f520
test eax, eax
setns al
mov edi, eax
js 0x423c35
lea eax, [esp + 4]
push esi
push eax
push ebx
call fcn.00406220
add esp, 0xc
push esi
call fcn.0040cde0
add esp, 4
mov ecx, edi
jmp 0x423c44
xor ecx, ecx
mov eax, dword [esp + 0x14]
and al, cl
mov dword [esp + 0x14], eax
mov dword [esp + 4], 0xe59b9ea4
mov dword [esp + 8], 0xeed5ded1
mov byte [esp + 0xc], 0x74
mov dword [esp + 0xd], 0
mov dword [esp + 0x10], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
lea ecx, [eax + eax]
mov esi, ecx
and esi, 0x1a
mov edi, eax
or edi, 0xf31c642
mov edx, eax
not edx
or edx, 0xf0ce39bd
and edx, edi
mov edi, edx
not edi
and edi, esi
add edi, edi
xor edx, esi
sub edx, edi
xor dl, byte [esp + eax + 4]
mov bl, 0x4e
sub bl, dl
mov byte [esp + eax + 4], bl
and ecx, 2
xor eax, 1
add eax, ecx
cmp eax, 0x10
jb 0x423c80
cmp byte [esp + 0x63], 0
js 0x423ce2
lea eax, [esp + 0x4c]
lea ecx, [esp + 4]
push eax
push ecx
mov ebx, dword [ebp + 0x14]
push ebx
call fcn.00406220
add esp, 0xc
mov cl, 1
jmp 0x423d41
mov ecx, dword [esp + 0x4c]
mov edi, dword [esp + 0x50]
mov eax, ecx
or eax, edi
mov ebx, dword [ebp + 0x14]
je 0x423d3f
mov esi, dword [esp + 0x54]
inc esi
push esi
mov dword [esp + 0x1c], ecx
call fcn.0040cdd0
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push esi
mov esi, eax
push eax
push edi
push dword [esp + 0x2c]
call fcn.0043f520
test eax, eax
setns al
mov edi, eax
js 0x423d32
lea eax, [esp + 4]
push esi
push eax
push ebx
call fcn.00406220
add esp, 0xc
push esi
call fcn.0040cde0
add esp, 4
mov ecx, edi
jmp 0x423d41
xor ecx, ecx
mov eax, dword [esp + 0x14]
and al, cl
mov dword [esp + 0x14], eax
mov dword [esp + 4], 0x5146545c
mov byte [esp + 8], 0xc8
mov dword [esp + 9], 0
mov word [esp + 0xd], 0
mov eax, 0xb4
mov ecx, 0x39758c4c
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, ecx
and esi, 0x2b
mov edx, ecx
or edx, 0x54
add edx, eax
or edx, esi
xor dl, byte [esp + eax - 0xb0]
xor dl, 0xab
add dl, 0x81
mov byte [esp + eax - 0xb0], dl
inc eax
dec ecx
cmp eax, 0xbf
jne 0x423d80
cmp byte [esp + 0x7b], 0
js 0x423dc9
lea eax, [esp + 0x64]
lea ecx, [esp + 4]
push eax
push ecx
push ebx
call fcn.00406220
add esp, 0xc
mov cl, 1
jmp 0x423e25
mov ecx, dword [esp + 0x64]
mov edi, dword [esp + 0x68]
mov eax, ecx
or eax, edi
je 0x423e23
mov esi, dword [esp + 0x6c]
inc esi
push esi
mov dword [esp + 0x1c], ecx
call fcn.0040cdd0
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push esi
mov esi, eax
push eax
push edi
push dword [esp + 0x2c]
call fcn.0043f520
test eax, eax
setns al
mov edi, eax
js 0x423e16
lea eax, [esp + 4]
push esi
push eax
push ebx
call fcn.00406220
add esp, 0xc
push esi
call fcn.0040cde0
add esp, 4
mov ecx, edi
jmp 0x423e25
xor ecx, ecx
mov eax, dword [esp + 0x14]
and al, cl
mov dword [esp + 0x14], eax
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + ecx*8 + 0x12c]
mov ecx, dword [esp + ecx*8 + 0x130]
mov dword [esp + 4], 0x3e3a0337
mov dword [esp + 8], 0x240b3c06
mov dword [esp + 0xc], 0x813f0f0f
mov byte [esp + 0x10], 0
mov edx, 0xd780f0a3
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + edx + 0x287f0f61]
xor esi, edx
add esi, 0x9848fd99
mov edi, esi
and edi, 1
xor esi, 1
lea ebx, [esi + edi*2]
add bl, 0x37
mov byte [esp + edx + 0x287f0f61], bl
inc edx
cmp edx, 0xd780f0b0
jne 0x423e70
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], ecx
fild qword [esp + 0x20]
sub esp, 0x10
lea esi, [esp + 0x14]
mov dword [esp + 4], esi
mov ebx, dword [ebp + 0x14]
mov dword [esp], ebx
fstp qword [esp + 8]
call fcn.00406270
add esp, 0x10
mov edi, eax
movzx eax, byte [esp + 0x84]
mov dword [esp + 4], 0x28d516e1
mov dword [esp + 8], 0x2d2fdad9
mov dword [esp + 0xc], 0xb1dd
xor ecx, ecx
nop
nop
nop
nop
nop
mov edx, ecx
add dl, 0x9e
xor dl, byte [esp + ecx + 4]
add dl, 0xea
mov byte [esp + ecx + 4], dl
mov edx, ecx
and edx, 1
xor ecx, 1
lea ecx, [ecx + edx*2]
cmp ecx, 0xc
jb 0x423ef0
push eax
push esi
push ebx
call fcn.00406300
add esp, 0xc
mov esi, eax
movzx eax, byte [esp + 0x85]
mov dword [esp + 0x1c], eax
mov dword [esp + 4], 0x797e7f4c
mov dword [esp + 8], 0x417c7e49
mov word [esp + 0xc], 0xd373
mov dword [esp + 0xe], 0
mov word [esp + 0x12], 0
or esi, edi
mov ecx, 0x84cfe9d7
mov edx, 0x7b301628
nop
nop
nop
nop
nop
movzx eax, byte [esp + ecx + 0x7b30162d]
mov edi, ecx
and edi, eax
add edi, edi
sub edi, eax
add edi, edx
and edi, ecx
add edi, edi
sub eax, edi
add eax, ecx
mov edi, eax
not edi
and eax, 0xcc
and edi, 0x33
sub eax, edi
mov byte [esp + ecx + 0x7b30162d], al
inc ecx
dec edx
cmp ecx, 0x84cfe9e7
jne 0x423f60
push dword [esp + 0x1c]
lea eax, [esp + 8]
push eax
push ebx
call fcn.00406300
add esp, 0xc
or esi, eax
sete al
mov ecx, dword [esp + 0x14]
and cl, al
mov eax, ecx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret