Function at 0x4237a0
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 0x42387b
mov edi, dword [ebp + 0x10]
mov esi, dword [ebp + 8]
lea ebx, [esp + 0x28]
push 0x120
push 0
push ebx
call fcn.0040cc40
add esp, 0xc
mov ecx, esi
push 0
push 0
push 0x120
push ebx
push edi
push dword [ebp + 0xc]
call fcn.004403c0
test eax, eax
js 0x42387b
mov dword [esp + 4], 0xd6c1dcc2
mov byte [esp + 8], 0x70
mov word [esp + 9], 0
mov byte [esp + 0xb], 0
mov edx, 0xea8b7895
nop
nop
movzx eax, byte [esp + edx + 0x1574876f]
mov ebx, eax
mov esi, eax
and ebx, edx
mov eax, ebx
or al, 0xfd
inc al
mov ecx, ebx
and cl, 0xfd
mul cl
mov ecx, eax
mov eax, esi
add cl, al
mov eax, ebx
shr al, 1
and al, 1
or bl, 2
mul bl
add al, al
sub cl, al
movzx eax, cl
add eax, edx
add al, 0x17
mov byte [esp + edx + 0x1574876f], al
inc edx
cmp edx, 0xea8b789d
jne 0x423810
cmp byte [esp + 0x47], 0
js 0x423882
lea eax, [esp + 0x30]
lea ecx, [esp + 4]
push eax
push ecx
push dword [ebp + 0x14]
call fcn.004061f0
add esp, 0xc
mov al, 1
mov dword [esp + 0x14], eax
jmp 0x4238df
xor eax, eax
jmp 0x423d43
mov ebx, dword [esp + 0x30]
mov esi, dword [esp + 0x34]
mov eax, ebx
or eax, esi
je 0x4238d7
mov edi, dword [esp + 0x38]
inc edi
push edi
call fcn.0040cbc0
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.004403c0
test eax, eax
setns al
mov dword [esp + 0x14], eax
js 0x4238cc
lea eax, [esp + 4]
push edi
push eax
push dword [ebp + 0x14]
call fcn.004061f0
add esp, 0xc
push edi
call fcn.0040cbd0
add esp, 4
jmp 0x4238df
mov dword [esp + 0x14], 0
mov dword [esp + 4], 0x626e7466
mov word [esp + 8], 0xa773
mov dword [esp + 0xa], 0
mov word [esp + 0xe], 0
mov eax, 0x1e8ef65b
mov ecx, 0x17109a4
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + eax - 0x1e8ef657]
mov edi, ecx
and edi, 0x12000ab
mov edx, eax
and edx, 0x1e025014
or edx, edi
mov edi, esi
xor edi, 0x608ca66b
xor esi, 0x1e025014
or edi, edx
not edx
or edx, esi
and edx, edi
mov esi, edx
and esi, 1
xor edx, 1
lea edx, [edx + esi*2]
add dl, 0x38
mov byte [esp + eax - 0x1e8ef657], dl
inc eax
dec ecx
cmp eax, 0x1e8ef667
jne 0x423910
cmp byte [esp + 0x127], 0
js 0x423984
lea eax, [esp + 0x110]
lea ecx, [esp + 4]
push eax
push ecx
push dword [ebp + 0x14]
call fcn.004061f0
add esp, 0xc
mov bl, 1
jmp 0x4239e0
mov ebx, dword [esp + 0x110]
mov esi, dword [esp + 0x114]
mov eax, ebx
or eax, esi
je 0x4239de
mov edi, dword [esp + 0x118]
inc edi
push edi
call fcn.0040cbc0
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.004403c0
test eax, eax
setns bl
js 0x4239d3
lea eax, [esp + 4]
push edi
push eax
push dword [ebp + 0x14]
call fcn.004061f0
add esp, 0xc
push edi
call fcn.0040cbd0
add esp, 4
jmp 0x4239e0
xor ebx, ebx
mov edx, dword [esp + 0x14]
and dl, bl
mov dword [esp + 4], 0x1fe1e6e8
mov dword [esp + 8], 0x26d3d6cb
mov byte [esp + 0xc], 0xa8
mov word [esp + 0xd], 0
mov byte [esp + 0xf], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0x9c
xor cl, byte [esp + eax + 4]
add cl, 0xf4
mov byte [esp + eax + 4], cl
inc eax
cmp eax, 0xc
jne 0x423a10
cmp byte [esp + 0x5f], 0
js 0x423a4a
lea eax, [esp + 0x48]
lea ecx, [esp + 4]
push eax
push ecx
push dword [ebp + 0x14]
mov esi, edx
call fcn.004061f0
mov edx, esi
add esp, 0xc
mov bl, 1
jmp 0x423aa5
mov ebx, dword [esp + 0x48]
mov esi, dword [esp + 0x4c]
mov eax, ebx
or eax, esi
je 0x423aa3
mov dword [esp + 0x14], edx
mov edi, dword [esp + 0x50]
inc edi
push edi
call fcn.0040cbc0
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.004403c0
test eax, eax
setns bl
js 0x423a94
lea eax, [esp + 4]
push edi
push eax
push dword [ebp + 0x14]
call fcn.004061f0
add esp, 0xc
push edi
call fcn.0040cbd0
add esp, 4
mov edx, dword [esp + 0x14]
jmp 0x423aa5
xor ebx, ebx
and dl, bl
mov dword [esp + 4], 0x1b160010
mov byte [esp + 8], 0x64
mov dword [esp + 9], 0
mov word [esp + 0xd], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0xe8
xor cl, byte [esp + eax + 4]
add cl, 0x78
mov byte [esp + eax + 4], cl
inc eax
cmp eax, 0xb
jne 0x423ad0
cmp byte [esp + 0x77], 0
js 0x423b0a
lea eax, [esp + 0x60]
lea ecx, [esp + 4]
push eax
push ecx
push dword [ebp + 0x14]
mov esi, edx
call fcn.004061f0
mov edx, esi
add esp, 0xc
mov bl, 1
jmp 0x423b65
mov ebx, dword [esp + 0x60]
mov esi, dword [esp + 0x64]
mov eax, ebx
or eax, esi
je 0x423b63
mov dword [esp + 0x14], edx
mov edi, dword [esp + 0x68]
inc edi
push edi
call fcn.0040cbc0
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.004403c0
test eax, eax
setns bl
js 0x423b54
lea eax, [esp + 4]
push edi
push eax
push dword [ebp + 0x14]
call fcn.004061f0
add esp, 0xc
push edi
call fcn.0040cbd0
add esp, 4
mov edx, dword [esp + 0x14]
jmp 0x423b65
xor ebx, ebx
and dl, bl
mov dword [esp + 0x14], edx
mov eax, dword [esp + 0x128]
mov dword [esp + 0x18], eax
mov ecx, dword [esp + 0x12c]
mov dword [esp + 4], 0xeaf6ffeb
mov dword [esp + 8], 0xecffecf2
mov dword [esp + 0xc], 0x9e3f3f3
mov dword [esp + 0x10], 0
mov edx, 0x41
mov esi, 0xbe
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + edx - 0x3d]
lea eax, [esi - 0xa0]
and eax, 0x14
mov ebx, edx
and ebx, 0x4b
or ebx, eax
xor ebx, 0xeb
and ebx, esi
lea eax, [esi - 0x3aaf7f00]
xor ebx, eax
not ebx
and ebx, edi
xor ebx, eax
mov eax, 0xda9288b9
sub eax, ebx
mov edi, eax
and edi, 1
xor eax, 1
lea eax, [eax + edi*2]
mov byte [esp + edx - 0x3d], al
inc edx
dec esi
cmp edx, 0x51
jne 0x423bb0
mov eax, dword [esp + 0x18]
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 eax, dword [ebp + 0x14]
mov dword [esp], eax
fstp qword [esp + 8]
call fcn.00406240
add esp, 0x10
mov dword [esp + 0x18], eax
movzx eax, byte [esp + 0x80]
mov dword [esp + 0x1c], eax
mov dword [esp + 4], 0x40554259
mov dword [esp + 8], 0x4d435e51
mov dword [esp + 0xc], 0xf955
mov ecx, 0xf69d8756
mov edx, 0x96278ab
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + ecx + 0x96278ae]
lea eax, [ecx + 0x7ffffffe]
xor eax, edi
or eax, edx
add edi, ecx
lea ebx, [edi + eax*2]
not edi
mov eax, ebx
and eax, 0x5b
xor ebx, 0x2eec5b5b
lea eax, [ebx + eax*2]
and edi, 1
and ebx, 1
xor eax, 1
or eax, ebx
add eax, edi
mov byte [esp + ecx + 0x96278ae], al
inc ecx
dec edx
cmp ecx, 0xf69d8762
jne 0x423c60
push dword [esp + 0x1c]
push esi
push dword [ebp + 0x14]
call fcn.004062d0
add esp, 0xc
movzx ecx, byte [esp + 0x81]
mov dword [esp + 0x1c], ecx
mov dword [esp + 4], 0x676a7560
mov dword [esp + 8], 0x67606677
mov dword [esp + 0xc], 0xd169
mov byte [esp + 0x10], 0
or eax, dword [esp + 0x18]
mov dword [esp + 0x18], eax
mov ecx, 0xfd64ed1
nop
nop
nop
nop
nop
movzx eax, byte [esi]
mov ebx, ecx
or ebx, eax
mov edx, ecx
xor edx, eax
add edx, eax
lea edi, [eax + eax]
not edi
add edi, eax
lea eax, [ecx - 0xfd64e00]
and eax, edi
not edx
add edx, ebx
not eax
and eax, edx
add al, 0x1a
mov byte [esi], al
dec ecx
inc esi
cmp ecx, 0xfd64ec4
jne 0x423cf0
lea eax, [esp + 4]
push dword [esp + 0x1c]
push eax
push dword [ebp + 0x14]
call fcn.004062d0
add esp, 0xc
or dword [esp + 0x18], eax
sete cl
mov eax, dword [esp + 0x14]
and al, cl
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret