Function at 0x423143
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 0x423088
mov edi, dword [ebp + 0x10]
mov esi, dword [ebp + 8]
lea ebx, [esp + 0x28]
push 0x120
push 0
push ebx
call fcn.0040ca90
add esp, 0xc
mov ecx, esi
push 0
push 0
push 0x120
push ebx
push edi
push dword [ebp + 0xc]
call fcn.0043ffa0
xor ebx, ebx
test eax, eax
js 0x42352c
mov dword [esp + 4], 0x5a23681a
mov byte [esp + 8], 0xb4
mov dword [esp + 9], 0
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, ebx
add al, 0xde
xor al, byte [esp + ebx + 4]
add al, 0xaa
mov byte [esp + ebx + 4], al
inc ebx
cmp ebx, 9
jne 0x423050
cmp byte [esp + 0x47], 0
js 0x42308f
lea eax, [esp + 0x30]
lea ecx, [esp + 4]
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405fc0
add esp, 0xc
mov al, 1
mov dword [esp + 0x14], eax
jmp 0x4230ec
xor ebx, ebx
jmp 0x42352c
mov esi, dword [esp + 0x30]
mov ebx, dword [esp + 0x34]
mov eax, esi
or eax, ebx
je 0x4230e4
mov edi, dword [esp + 0x38]
inc edi
push edi
call fcn.0040ca00
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.0043ffa0
test eax, eax
setns bl
js 0x4230d5
lea eax, [esp + 4]
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405fc0
add esp, 0xc
mov dword [esp + 0x14], ebx
push edi
call fcn.0040ca10
add esp, 4
jmp 0x4230ec
mov dword [esp + 0x14], 0
mov dword [esp + 4], 0x86827c8a
mov word [esp + 8], 0x1377
mov dword [esp + 0xa], 0
mov word [esp + 0xe], 0
lea eax, [esp + 4]
mov ecx, 0xfa
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [eax]
lea edx, [ecx - 0xaefef00]
or edx, esi
and esi, ecx
not edx
or edx, esi
lea esi, [edx + edx]
mov edi, esi
and edi, 0x12a0b3cc
xor edx, 0xc95059e6
mov ebx, edi
and ebx, edx
xor edx, edi
lea edx, [edx + ebx*2]
and esi, 2
xor edx, 1
add edx, esi
mov byte [eax], dl
inc eax
dec ecx
cmp ecx, 0xee
jne 0x423120
cmp byte [esp + 0x127], 0
js 0x423185
lea eax, [esp + 0x110]
lea ecx, [esp + 4]
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405fc0
add esp, 0xc
mov bl, 1
jmp 0x4231e1
mov esi, dword [esp + 0x110]
mov ebx, dword [esp + 0x114]
mov eax, esi
or eax, ebx
je 0x4231df
mov edi, dword [esp + 0x118]
inc edi
push edi
call fcn.0040ca00
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.0043ffa0
test eax, eax
setns bl
js 0x4231d4
lea eax, [esp + 4]
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405fc0
add esp, 0xc
push edi
call fcn.0040ca10
add esp, 4
jmp 0x4231e1
xor ebx, ebx
mov eax, dword [esp + 0x14]
and al, bl
mov ebx, eax
mov dword [esp + 4], 0xa5a7aa94
mov dword [esp + 8], 0xa28db299
mov byte [esp + 0xc], 0x24
mov dword [esp + 0xd], 0
mov dword [esp + 0x10], 0
mov eax, 0x2cc5524b
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax - 0x2cc55247]
xor ecx, eax
mov edx, ecx
and edx, 8
xor ecx, 0x88
lea ecx, [ecx + edx*2]
inc cl
mov byte [esp + eax - 0x2cc55247], cl
inc eax
cmp eax, 0x2cc5525b
jne 0x423220
cmp byte [esp + 0x5f], 0
js 0x42326c
lea eax, [esp + 0x48]
lea ecx, [esp + 4]
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405fc0
add esp, 0xc
mov edi, 1
jmp 0x4232cb
mov esi, dword [esp + 0x48]
mov edi, dword [esp + 0x4c]
mov eax, esi
or eax, edi
je 0x4232c9
mov dword [esp + 0x14], ebx
mov ebx, dword [esp + 0x50]
inc ebx
push ebx
call fcn.0040ca00
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.0043ffa0
mov edi, eax
test eax, eax
js 0x4232b5
lea eax, [esp + 4]
push ebx
push eax
push dword [ebp + 0x14]
call fcn.00405fc0
add esp, 0xc
push ebx
call fcn.0040ca10
add esp, 4
not edi
shr edi, 0x1f
mov ebx, dword [esp + 0x14]
jmp 0x4232cb
xor edi, edi
movzx esi, bl
not esi
or edi, esi
mov dword [esp + 4], 0x41be4cb4
mov byte [esp + 8], 0x28
mov dword [esp + 9], 0
mov byte [esp + 0xd], 0
xor eax, eax
xor ecx, ecx
mov ebx, eax
and ebx, 0xe
mov edx, ecx
xor edx, 0xb7
add edx, ebx
xor dl, byte [esp + ecx + 4]
add dl, 0x6d
mov byte [esp + ecx + 4], dl
inc ecx
add eax, 2
cmp ecx, 0xa
jne 0x4232f0
cmp byte [esp + 0x77], 0
mov dword [esp + 0x14], edi
js 0x42333b
lea eax, [esp + 0x60]
lea ecx, [esp + 4]
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405fc0
add esp, 0xc
mov al, 1
mov dword [esp + 0x18], eax
jmp 0x4233a6
mov ecx, dword [esp + 0x60]
mov edx, dword [esp + 0x64]
mov eax, ecx
or eax, edx
je 0x42339e
mov ebx, dword [esp + 0x68]
inc ebx
push ebx
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x20], edx
call fcn.0040ca00
add esp, 4
mov edi, eax
mov ecx, dword [ebp + 8]
push 0
push 0
push ebx
push eax
push dword [esp + 0x2c]
push dword [esp + 0x2c]
call fcn.0043ffa0
test eax, eax
setns al
mov dword [esp + 0x18], eax
js 0x423393
lea eax, [esp + 4]
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405fc0
add esp, 0xc
push edi
call fcn.0040ca10
add esp, 4
jmp 0x4233a6
mov dword [esp + 0x18], 0
mov eax, dword [esp + 0x128]
mov ecx, dword [esp + 0x12c]
mov dword [esp + 4], 0x666a537f
mov dword [esp + 8], 0x7c6b646e
mov dword [esp + 0xc], 0xd1776757
mov edx, 0xbd60a1af
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + edx + 0x429f5e55]
xor ebx, edx
mov edi, ebx
xor edi, 0x6c
and ebx, 0x13
add ebx, ebx
sub ebx, edi
inc bl
mov byte [esp + edx + 0x429f5e55], bl
inc edx
cmp edx, 0xbd60a1bb
jne 0x4233e0
cmp dword [esp + 0x14], esi
setne bl
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.00406010
add esp, 0x10
mov dword [esp + 0x14], eax
movzx eax, byte [esp + 0x80]
mov dword [esp + 4], 0x1c0b1e0b
mov dword [esp + 8], 0x1b150a03
mov word [esp + 0xc], 0xf307
mov dword [esp + 0xe], 0
mov word [esp + 0x12], 0
and bl, byte [esp + 0x18]
mov ecx, 0xa7
mov edi, 0x58
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + ecx - 0xa3]
mov edx, edi
xor edx, ecx
and edx, esi
xor edx, ecx
add dl, 0xbd
mov byte [esp + ecx - 0xa3], dl
inc ecx
dec edi
cmp ecx, 0xb7
jne 0x423480
push eax
lea eax, [esp + 8]
push eax
push dword [ebp + 0x14]
call fcn.004060a0
add esp, 0xc
mov edi, eax
movzx eax, byte [esp + 0x81]
mov dword [esp + 0x18], eax
mov dword [esp + 4], 0x477a7540
mov dword [esp + 8], 0x47404657
mov word [esp + 0xc], 0xf179
mov dword [esp + 0xe], 0
or edi, dword [esp + 0x14]
mov esi, 0x16
mov eax, 0x29
mov edx, eax
and edx, 0x24
mov ecx, esi
and ecx, 0x1b
or ecx, edx
xor cl, byte [esp + esi - 0x12]
xor cl, 0x64
add cl, 0x52
mov byte [esp + esi - 0x12], cl
inc esi
dec eax
cmp esi, 0x24
jne 0x4234f0
push dword [esp + 0x18]
lea eax, [esp + 8]
push eax
push dword [ebp + 0x14]
call fcn.004060a0
add esp, 0xc
or edi, eax
sete al
and bl, al
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret