Function at 0x423260
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 0x423334
mov edi, dword [ebp + 0x10]
mov esi, dword [ebp + 8]
lea ebx, [esp + 0x20]
push 0x120
push 0
push ebx
call fcn.0040ca80
add esp, 0xc
mov ecx, esi
push 0
push 0
push 0x120
push ebx
push edi
push dword [ebp + 0xc]
call fcn.004406f0
xor ebx, ebx
test eax, eax
js 0x423780
mov edi, dword [ebp + 0x14]
mov dword [esp + 4], 0x9a9398aa
mov byte [esp + 8], 0x3c
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
nop
mov edx, ebx
and edx, 0x14
mov ecx, eax
xor ecx, 0x9438b50a
add ecx, edx
mov edx, ecx
and edx, 0x13
or edx, 0x84
and ecx, 0x2c
xor ecx, edx
xor cl, byte [esp + eax + 4]
xor cl, 0x84
add cl, 0xce
mov byte [esp + eax + 4], cl
inc eax
add ebx, 2
cmp eax, 0xb
jne 0x4232e0
cmp byte [esp + 0x3f], 0
js 0x42333b
lea eax, [esp + 0x28]
lea ecx, [esp + 4]
push eax
push ecx
push edi
call fcn.00405dd0
add esp, 0xc
mov bl, 1
jmp 0x423392
xor ebx, ebx
jmp 0x423780
mov ebx, dword [esp + 0x28]
mov esi, dword [esp + 0x2c]
mov eax, ebx
or eax, esi
je 0x42338d
mov edi, dword [esp + 0x30]
inc edi
push edi
call fcn.0040c9f0
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push edi
push eax
push esi
mov esi, eax
push ebx
call fcn.004406f0
test eax, eax
setns bl
mov edi, dword [ebp + 0x14]
js 0x423382
lea eax, [esp + 4]
push esi
push eax
push edi
call fcn.00405dd0
add esp, 0xc
push esi
call fcn.0040ca00
add esp, 4
jmp 0x423392
xor ebx, ebx
mov edi, dword [ebp + 0x14]
mov dword [esp + 4], 0x4e46504e
mov dword [esp + 8], 0x3d51
mov byte [esp + 0xc], 0
mov eax, 0xb4
mov ecx, 0x4b
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + eax - 0xb0]
mov edx, ecx
xor edx, eax
and edx, esi
xor edx, eax
add dl, 0x7c
mov byte [esp + eax - 0xb0], dl
inc eax
dec ecx
cmp eax, 0xbd
jne 0x4233c0
cmp byte [esp + 0x11f], 0
js 0x423407
lea eax, [esp + 0x108]
lea ecx, [esp + 4]
push eax
push ecx
push edi
call fcn.00405dd0
add esp, 0xc
mov al, 1
jmp 0x423470
mov esi, dword [esp + 0x108]
mov edi, dword [esp + 0x10c]
mov eax, esi
or eax, edi
je 0x42346e
mov dword [esp + 0x14], ebx
mov ebx, dword [esp + 0x110]
inc ebx
push ebx
call fcn.0040c9f0
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push ebx
mov ebx, dword [ebp + 0x14]
push eax
push edi
push esi
mov esi, eax
call fcn.004406f0
test eax, eax
setns al
mov edi, eax
js 0x42345d
lea eax, [esp + 4]
push esi
push eax
push ebx
call fcn.00405dd0
add esp, 0xc
push esi
call fcn.0040ca00
add esp, 4
mov ebx, dword [esp + 0x14]
mov eax, edi
jmp 0x423470
xor eax, eax
and bl, al
mov dword [esp + 0x14], ebx
mov dword [esp + 4], 0x50b0e04
mov dword [esp + 8], 0x1e350e31
mov byte [esp + 0xc], 0x94
mov dword [esp + 0xd], 0
mov word [esp + 0x11], 0
mov eax, 0xd6b512a5
mov ecx, 0x5a
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax + 0x294aed5f]
mov esi, edx
and esi, eax
add esi, esi
mov ebx, esi
not ebx
and ebx, eax
and esi, ecx
sub ebx, esi
add bl, dl
add bl, 0xc7
mov byte [esp + eax + 0x294aed5f], bl
inc eax
dec ecx
cmp eax, 0xd6b512b4
jne 0x4234b0
cmp byte [esp + 0x57], 0
js 0x423502
lea eax, [esp + 0x40]
lea ecx, [esp + 4]
push eax
push ecx
mov esi, dword [ebp + 0x14]
push esi
call fcn.00405dd0
add esp, 0xc
mov al, 1
mov ebx, dword [esp + 0x14]
jmp 0x42355e
mov esi, dword [esp + 0x40]
mov edi, dword [esp + 0x44]
mov eax, esi
or eax, edi
je 0x423612
mov ebx, dword [esp + 0x48]
inc ebx
push ebx
call fcn.0040c9f0
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.004406f0
test eax, eax
setns al
mov edi, eax
mov esi, dword [ebp + 0x14]
js 0x42354f
lea eax, [esp + 4]
push ebx
push eax
push esi
call fcn.00405dd0
add esp, 0xc
push ebx
call fcn.0040ca00
add esp, 4
mov ebx, dword [esp + 0x14]
mov eax, edi
and bl, al
mov dword [esp + 4], 0xa9daa4d4
mov byte [esp + 8], 0x40
mov dword [esp + 9], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0x91
xor cl, byte [esp + eax + 4]
add cl, 0x2b
mov byte [esp + eax + 4], cl
inc eax
cmp eax, 9
jne 0x423580
cmp byte [esp + 0x6f], 0
js 0x4235b4
lea eax, [esp + 0x58]
lea ecx, [esp + 4]
push eax
push ecx
push esi
call fcn.00405dd0
add esp, 0xc
mov al, 1
jmp 0x42361e
mov esi, dword [esp + 0x58]
mov edi, dword [esp + 0x5c]
mov eax, esi
or eax, edi
je 0x42361c
mov dword [esp + 0x14], ebx
mov ebx, dword [esp + 0x60]
inc ebx
push ebx
call fcn.0040c9f0
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push ebx
mov ebx, dword [ebp + 0x14]
push eax
push edi
push esi
mov esi, eax
call fcn.004406f0
test eax, eax
setns al
mov edi, eax
js 0x423601
lea eax, [esp + 4]
push esi
push eax
push ebx
call fcn.00405dd0
add esp, 0xc
push esi
call fcn.0040ca00
add esp, 4
mov ebx, dword [esp + 0x14]
mov eax, edi
jmp 0x42361e
xor eax, eax
mov esi, dword [ebp + 0x14]
jmp 0x4234fc
xor eax, eax
and bl, al
mov dword [esp + 0x14], ebx
mov eax, dword [esp + 0x120]
mov ecx, dword [esp + 0x124]
mov dword [esp + 4], 0xaeaaa397
mov dword [esp + 8], 0x84bb8ca6
mov dword [esp + 0xc], 0x218fbfbf
mov word [esp + 0x10], 0
mov byte [esp + 0x12], 0
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
mov ebx, edx
add bl, 0xcb
xor bl, byte [esp + edx + 4]
add bl, 9
mov byte [esp + edx + 4], bl
inc edx
cmp edx, 0xf
jne 0x423660
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], ecx
fild qword [esp + 0x18]
sub esp, 0x10
lea eax, [esp + 0x14]
mov dword [esp + 4], eax
mov ebx, dword [ebp + 0x14]
mov dword [esp], ebx
fstp qword [esp + 8]
call fcn.00405e20
add esp, 0x10
mov esi, eax
movzx eax, byte [esp + 0x78]
mov dword [esp + 4], 0xec07ea1f
mov dword [esp + 8], 0xfed1e1f
mov word [esp + 0xc], 0x7f03
mov dword [esp + 0xe], 0
mov word [esp + 0x12], 0
mov ecx, 0xaf1ff269
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx + 0x50e00d9b]
xor edx, ecx
add edx, 0x838bec83
mov edi, edx
xor edi, 0x91
and edx, 0x6e
add edx, edx
sub edx, edi
inc dl
mov byte [esp + ecx + 0x50e00d9b], dl
inc ecx
cmp ecx, 0xaf1ff279
jne 0x4236e0
push eax
lea eax, [esp + 8]
push eax
push ebx
call fcn.00405eb0
add esp, 0xc
mov edi, eax
movzx eax, byte [esp + 0x79]
mov dword [esp + 4], 0x676a95a0
mov dword [esp + 8], 0x67606657
mov word [esp + 0xc], 0xf169
mov dword [esp + 0xe], 0
or edi, esi
xor ecx, ecx
nop
nop
nop
nop
nop
nop
mov edx, ecx
add dl, 0xfe
xor dl, byte [esp + ecx + 4]
add dl, 0xa
mov byte [esp + ecx + 4], dl
inc ecx
cmp ecx, 0xe
jne 0x423750
push eax
lea eax, [esp + 8]
push eax
push ebx
call fcn.00405eb0
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