Function at 0x4229b0
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 0x422a86
mov edi, dword [ebp + 0x10]
mov esi, dword [ebp + 8]
lea ebx, [esp + 0x28]
push 0x120
push 0
push ebx
call fcn.0040cbc0
add esp, 0xc
mov ecx, esi
push 0
push 0
push 0x120
push ebx
push edi
push dword [ebp + 0xc]
call fcn.0043f7c0
xor ebx, ebx
test eax, eax
js 0x422ee4
mov edi, dword [ebp + 0x14]
mov dword [esp + 4], 0xaea790a6
mov byte [esp + 8], 0x2c
mov dword [esp + 9], 0
mov byte [esp + 0xd], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax + 4]
mov esi, ebx
and esi, 0x18
mov ecx, eax
xor ecx, 0xeb2d654c
add ecx, esi
xor ecx, edx
mov edx, 0xd9
sub edx, ecx
add ecx, 0x26
and edx, 0xa2
and ecx, 0x5d
sub ecx, edx
mov byte [esp + eax + 4], cl
inc eax
add ebx, 2
cmp eax, 0xa
jne 0x422a30
cmp byte [esp + 0x47], 0
js 0x422a8d
lea eax, [esp + 0x30]
lea ecx, [esp + 4]
push eax
push ecx
push edi
call fcn.00406240
add esp, 0xc
mov bl, 1
jmp 0x422ae1
xor ebx, ebx
jmp 0x422ee4
mov esi, dword [esp + 0x30]
mov ebx, dword [esp + 0x34]
mov eax, esi
or eax, ebx
je 0x422adf
mov edi, dword [esp + 0x38]
inc edi
push edi
call fcn.0040cb10
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push edi
mov edi, dword [ebp + 0x14]
push eax
push ebx
push esi
mov esi, eax
call fcn.0043f7c0
test eax, eax
setns bl
js 0x422ad4
lea eax, [esp + 4]
push esi
push eax
push edi
call fcn.00406240
add esp, 0xc
push esi
call fcn.0040cb20
add esp, 4
jmp 0x422ae1
xor ebx, ebx
mov dword [esp + 4], 0xb2464cbe
mov dword [esp + 8], 0x2f43
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, eax
and edx, 1
xor edx, 0xc9
mov ecx, eax
and ecx, 6
sub ecx, edx
xor cl, byte [esp + eax + 4]
add cl, 0xed
mov byte [esp + eax + 4], cl
inc eax
cmp eax, 8
jne 0x422b00
mov esi, ebx
cmp byte [esp + 0x127], 0
js 0x422b49
lea eax, [esp + 0x110]
lea ecx, [esp + 4]
push eax
push ecx
push edi
call fcn.00406240
add esp, 0xc
mov bl, 1
jmp 0x422bb5
mov ecx, dword [esp + 0x110]
mov ebx, dword [esp + 0x114]
mov eax, ecx
or eax, ebx
je 0x422bb3
mov edi, dword [esp + 0x118]
inc edi
push edi
mov dword [esp + 0x1c], ecx
call fcn.0040cb10
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push edi
mov edi, dword [ebp + 0x14]
mov dword [esp + 0x20], eax
push eax
push ebx
push dword [esp + 0x2c]
call fcn.0043f7c0
test eax, eax
setns bl
js 0x422ba5
lea eax, [esp + 4]
push dword [esp + 0x14]
push eax
push edi
call fcn.00406240
add esp, 0xc
push dword [esp + 0x14]
call fcn.0040cb20
add esp, 4
jmp 0x422bb5
xor ebx, ebx
mov eax, esi
and al, bl
mov ebx, eax
mov dword [esp + 4], 0x3d3b362c
mov dword [esp + 8], 0x362d3621
mov byte [esp + 0xc], 0x8c
mov dword [esp + 0xd], 0
mov word [esp + 0x11], 0
mov eax, 0x9a696f21
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0x659690e3]
mov edx, eax
and edx, ecx
add edx, edx
sub ecx, edx
add ecx, eax
mov edx, ecx
and edx, 0x5a
xor ecx, 0x5a
lea ecx, [ecx + edx*2]
inc cl
mov byte [esp + eax + 0x659690e3], cl
inc eax
cmp eax, 0x9a696f30
jne 0x422bf0
cmp byte [esp + 0x5f], 0
js 0x422c3f
lea eax, [esp + 0x48]
lea ecx, [esp + 4]
push eax
push ecx
push edi
call fcn.00406240
add esp, 0xc
mov edi, 1
jmp 0x422c9e
mov esi, dword [esp + 0x48]
mov edi, dword [esp + 0x4c]
mov eax, esi
or eax, edi
je 0x422c9c
mov dword [esp + 0x14], ebx
mov ebx, dword [esp + 0x50]
inc ebx
push ebx
call fcn.0040cb10
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.0043f7c0
mov edi, eax
test eax, eax
js 0x422c88
lea eax, [esp + 4]
push ebx
push eax
push dword [ebp + 0x14]
call fcn.00406240
add esp, 0xc
push ebx
call fcn.0040cb20
add esp, 4
not edi
shr edi, 0x1f
mov ebx, dword [esp + 0x14]
jmp 0x422c9e
xor edi, edi
movzx esi, bl
not esi
or edi, esi
mov dword [esp + 4], 0x5b4e5040
mov byte [esp + 8], 0x3c
mov word [esp + 9], 0
mov byte [esp + 0xb], 0
xor eax, eax
mov ecx, eax
add cl, 0xb4
xor cl, byte [esp + eax + 4]
add cl, 0x7c
mov byte [esp + eax + 4], cl
inc eax
cmp eax, 8
jne 0x422cc0
cmp byte [esp + 0x77], 0
js 0x422cf6
lea eax, [esp + 0x60]
lea ecx, [esp + 4]
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00406240
add esp, 0xc
mov bl, 1
jmp 0x422d5f
mov ecx, dword [esp + 0x60]
mov edx, dword [esp + 0x64]
mov eax, ecx
or eax, edx
je 0x422d5d
mov ebx, dword [esp + 0x68]
inc ebx
push ebx
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x20], edx
call fcn.0040cb10
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push ebx
mov dword [esp + 0x20], eax
push eax
push dword [esp + 0x2c]
push dword [esp + 0x2c]
call fcn.0043f7c0
test eax, eax
setns bl
js 0x422d4f
lea eax, [esp + 4]
push dword [esp + 0x14]
push eax
push dword [ebp + 0x14]
call fcn.00406240
add esp, 0xc
push dword [esp + 0x14]
call fcn.0040cb20
add esp, 4
jmp 0x422d5f
xor ebx, ebx
cmp edi, esi
setne al
mov ecx, dword [esp + 0x128]
mov dword [esp + 0x18], ecx
mov esi, dword [esp + 0x12c]
mov dword [esp + 4], 0x9a96af9b
mov dword [esp + 8], 0x9caf9c92
mov dword [esp + 0xc], 0x3983b3b3
mov byte [esp + 0x10], 0
and al, bl
mov byte [esp + 0x14], al
mov edi, 0x99f5b8c9
nop
nop
movzx edx, byte [esp + edi + 0x660a473b]
mov ebx, edx
and ebx, edi
mov eax, ebx
or al, 0xfd
inc al
mov ecx, ebx
and cl, 0xdd
mul cl
mov ecx, eax
add cl, dl
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, edi
add al, 0x13
mov byte [esp + edi + 0x660a473b], al
inc edi
cmp edi, 0x99f5b8d6
jne 0x422da0
mov eax, dword [esp + 0x18]
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], esi
fild qword [esp + 0x20]
sub esp, 0x10
lea esi, [esp + 0x14]
mov dword [esp + 4], esi
mov edi, dword [ebp + 0x14]
mov dword [esp], edi
fstp qword [esp + 8]
call fcn.00406290
add esp, 0x10
test eax, eax
sete cl
movzx eax, byte [esp + 0x80]
mov dword [esp + 4], 0xe0f5e2e9
mov dword [esp + 8], 0xdd23ced1
mov word [esp + 0xc], 0xa9d5
mov dword [esp + 0xe], 0
and byte [esp + 0x14], cl
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, ecx
add dl, 0x9c
xor dl, byte [esp + ecx + 4]
add dl, 0xf4
mov byte [esp + ecx + 4], dl
inc ecx
cmp ecx, 0xe
jne 0x422e50
push eax
push esi
push edi
call fcn.00406320
add esp, 0xc
test eax, eax
setne bl
movzx ecx, byte [esp + 0x14]
xor bl, cl
movzx eax, byte [esp + 0x81]
mov dword [esp + 4], 0x6f6a6d70
mov dword [esp + 8], 0x4f506e7f
mov word [esp + 0xc], 0xa159
mov dword [esp + 0xe], 0
mov word [esp + 0x12], 0
and bl, cl
xor ecx, ecx
nop
mov edi, ecx
and edi, 6
xor edi, 0x26
mov edx, ecx
and edx, 9
sub edx, edi
xor dl, byte [esp + ecx + 4]
add dl, 0xbe
mov byte [esp + ecx + 4], dl
inc ecx
cmp ecx, 0x10
jne 0x422eb0
push eax
push esi
push dword [ebp + 0x14]
call fcn.00406320
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