Function at 0x4224e0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0xa08
mov dword [esp + 0xc0], 0x23df21dd
mov dword [esp + 0xc4], 0x27922591
mov dword [esp + 0xc8], 0x3b863981
mov dword [esp + 0xcc], 0x3f8a3d85
mov dword [esp + 0xd0], 0x33cf31b9
mov dword [esp + 0xd4], 0x37833587
mov dword [esp + 0xd8], 0xbf709aa
mov dword [esp + 0xdc], 0xf870db8
mov dword [esp + 0xe0], 0x3a701b0
mov dword [esp + 0xe4], 0x7b805c9
mov dword [esp + 0xe8], 0x1bae19bd
mov dword [esp + 0xec], 0x1fa11dab
mov dword [esp + 0xf0], 0x13a911a2
mov dword [esp + 0xf4], 0x17ab15ea
mov dword [esp + 0xf8], 0xeb50e957
mov dword [esp + 0xfc], 0xef53ed53
mov dword [esp + 0x100], 0xe33ce11e
mov dword [esp + 0x104], 0xe752e541
mov dword [esp + 0x108], 0xfb45f94f
mov dword [esp + 0x10c], 0xff45fd4e
mov dword [esp + 0x110], 0xf357f123
mov dword [esp + 0x114], 0xf740f546
mov dword [esp + 0x118], 0xcb69c971
mov dword [esp + 0x11c], 0xcfcecd69
mov byte [esp + 0x120], 0
lea eax, [esp + 0x120]
mov ecx, 0xc7
mov edx, 0x3baa2d37
movzx esi, byte [esp + ecx - 7]
lea edi, [ecx - 0x1dd516ff]
lea ebx, [edx - 0x3baa2d00]
and ebx, edx
or edi, esi
not esi
or esi, ebx
and esi, edi
mov edi, esi
xor edi, 0x6ad690e8
mov ebx, esi
or ebx, 0x15296f17
and ebx, edi
xor esi, 0x95296f17
lea edi, [esi + ebx*2]
and esi, 1
xor edi, 1
lea ebx, [edi + esi*2]
mov byte [esp + ecx - 7], bl
inc ecx
dec edx
cmp ecx, 0x128
jne 0x422610
lea edi, [esp + 0x60]
lea edx, [esp + 0xc0]
mov ecx, 0x18
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
lea edi, [esp + 0xc0]
xor ecx, ecx
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
mov dword [esp + 0x2c], 0
mov dword [esp + 0xc0], 0x20272625
mov byte [esp + 0xc4], 0
mov ebx, 0xaee1bf39
mov ecx, 0x4479031b
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + ebx + 0x511e4187]
mov eax, ebx
and eax, esi
add eax, eax
mov edi, esi
sub edi, eax
lea edx, [ebx + edi]
add edi, ecx
xor edi, 1
add edi, esi
sub edi, eax
add esi, ecx
sub esi, eax
and esi, 0xfe
mov eax, ecx
sub eax, esi
and edx, 1
add eax, edi
lea esi, [ecx + edi]
and esi, edx
xor eax, edx
lea eax, [eax + esi*2]
mov byte [esp + ebx + 0x511e4187], al
inc ebx
inc ecx
cmp ebx, 0xaee1bf3e
jne 0x4226b0
mov eax, dword [esp + 0xc0]
mov ecx, dword [0x451b2c]
test ecx, ecx
mov edi, dword [ebp + 0x14]
je 0x422754
xor edx, edx
mov esi, dword [0x451b30]
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [esi + edx*8], 0xc85f7986
je 0x422730
inc edx
cmp ecx, edx
jne 0x422720
jmp 0x422754
mov ecx, dword [esi + edx*8 + 4]
cmp ecx, eax
je 0x422754
lea eax, [esp + 0x2c]
push eax
push 0
push 0
push 5
push 4
push dword [0x451b34]
push ecx
call fcn.00442050
add esp, 0x1c
cmp eax, 0xc0000004
jne 0x422820
push dword [esp + 0x2c]
call fcn.0043f6b0
add esp, 4
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 4], eax
mov dword [esp + 0xc0], 0x20272625
mov byte [esp + 0xc4], 0
mov eax, 0xaee1bf39
mov edx, 0x4479031b
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0x511e4187]
mov ebx, eax
and ebx, ecx
add ebx, ebx
mov edi, ecx
sub edi, ebx
lea esi, [eax + edi]
add edi, edx
xor edi, 1
add edi, ecx
sub edi, ebx
add ecx, edx
sub ecx, ebx
and ecx, 0xfe
mov ebx, edx
sub ebx, ecx
and esi, 1
add ebx, edi
lea ecx, [edx + edi]
and ecx, esi
xor ebx, esi
lea ecx, [ebx + ecx*2]
mov byte [esp + eax + 0x511e4187], cl
inc eax
inc edx
cmp eax, 0xaee1bf3e
jne 0x4227a0
mov eax, dword [esp + 0xc0]
mov ecx, dword [0x451b2c]
test ecx, ecx
je 0x42282b
xor edx, edx
mov esi, dword [0x451b30]
mov ebx, dword [ebp + 8]
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [esi + edx*8], 0xc85f7986
je 0x422830
inc edx
cmp ecx, edx
jne 0x422810
jmp 0x422855
xor ecx, ecx
xor edx, edx
xor esi, esi
jmp 0x422e2a
mov ebx, dword [ebp + 8]
jmp 0x422855
mov ecx, dword [esi + edx*8 + 4]
cmp ecx, eax
je 0x422855
push 0
push dword [esp + 8]
push dword [esp + 0x2c]
push 5
push 4
push dword [0x451b34]
push ecx
call fcn.00442050
add esp, 0x1c
test eax, eax
mov edi, dword [ebp + 0x14]
js 0x422dfa
mov ecx, dword [esp + 0x24]
mov eax, dword [ecx]
mov dword [esp + 0x14], 0
mov edx, ecx
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
jmp 0x4228a5
mov ecx, edi
call fcn.0043fbb0
mov edx, dword [esp + 4]
mov eax, dword [edx]
test eax, eax
je 0x422e12
mov ecx, dword [edx + eax + 0x3c]
add eax, edx
mov dword [esp + 4], eax
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, word [ecx + edx]
movzx esi, word [ebx + edx]
test eax, eax
je 0x4228d4
add edx, 2
cmp ax, si
je 0x4228c0
movzx ecx, si
mov edx, ecx
xor edx, eax
not ecx
and ecx, eax
add ecx, ecx
cmp ecx, edx
jne 0x422897
mov ecx, dword [esp + 4]
mov eax, dword [ecx + 0x44]
mov dword [edi + 8], eax
mov eax, dword [ecx + 0xdc]
mov dword [edi + 0xc], eax
mov ecx, edi
push 0x410
call fcn.0043fa50
test eax, eax
js 0x422897
mov dword [esp + 0x28], 0
mov eax, dword [edi]
mov dword [esp + 0xc], eax
mov dword [esp + 0xc0], 0x20272625
mov byte [esp + 0xc4], 0
mov eax, 0xaee1bf39
mov edx, 0x4479031b
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + eax + 0x511e4187]
mov ebx, eax
and ebx, esi
add ebx, ebx
mov ecx, esi
sub ecx, ebx
lea edi, [eax + ecx]
add ecx, edx
xor ecx, 1
add ecx, esi
sub ecx, ebx
add esi, edx
sub esi, ebx
and esi, 0xfe
mov ebx, edx
sub ebx, esi
and edi, 1
add ebx, ecx
add ecx, edx
and ecx, edi
xor ebx, edi
lea ecx, [ebx + ecx*2]
mov byte [esp + eax + 0x511e4187], cl
inc eax
inc edx
cmp eax, 0xaee1bf3e
jne 0x422940
mov eax, dword [esp + 0xc0]
mov ecx, dword [0x451b2c]
test ecx, ecx
je 0x4229f0
xor edx, edx
mov esi, dword [0x451b30]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [esi + edx*8], 0x62429966
je 0x4229c0
inc edx
cmp ecx, edx
jne 0x4229b0
jmp 0x4229f0
mov ecx, dword [esi + edx*8 + 4]
cmp ecx, eax
je 0x4229f0
lea eax, [esp + 0x28]
push eax
push 0
push 0
push 0x2b
push dword [esp + 0x1c]
push 5
push dword [0x451b34]
push ecx
call fcn.00442050
add esp, 0x20
nop
nop
nop
nop
nop
nop
nop
nop
cmp eax, 0xc0000004
mov edi, dword [ebp + 0x14]
jne 0x422ac0
mov eax, dword [esp + 0x28]
add eax, 2
push eax
call fcn.0043f6b0
add esp, 4
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x10], eax
mov eax, dword [edi]
mov dword [esp + 0x20], eax
mov dword [esp + 0xc0], 0x20272625
mov byte [esp + 0xc4], 0
mov eax, 0xaee1bf39
mov edi, 0x4479031b
nop
nop
nop
movzx edx, byte [esp + eax + 0x511e4187]
mov ebx, eax
and ebx, edx
add ebx, ebx
mov esi, edx
sub esi, ebx
lea ecx, [eax + esi]
add esi, edi
xor esi, 1
add esi, edx
sub esi, ebx
add edx, edi
sub edx, ebx
and edx, 0xfe
mov ebx, edi
sub ebx, edx
and ecx, 1
add ebx, esi
lea edx, [edi + esi]
and edx, ecx
xor ebx, ecx
lea ecx, [ebx + edx*2]
mov byte [esp + eax + 0x511e4187], cl
inc eax
inc edi
cmp eax, 0xaee1bf3e
jne 0x422a40
mov eax, dword [esp + 0xc0]
mov ecx, dword [0x451b2c]
test ecx, ecx
je 0x422ac8
add dword [esp + 0x10], 2
xor edx, edx
mov esi, dword [0x451b30]
mov edi, dword [ebp + 0x14]
mov ebx, dword [ebp + 8]
nop
cmp dword [esi + edx*8], 0x62429966
je 0x422ad0
inc edx
cmp ecx, edx
jne 0x422ab0
jmp 0x422af9
mov ebx, dword [ebp + 8]
jmp 0x422ddf
mov edi, dword [ebp + 0x14]
mov ebx, dword [ebp + 8]
jmp 0x422af9
mov ecx, dword [esi + edx*8 + 4]
cmp ecx, eax
je 0x422af9
push 0
push dword [esp + 0x14]
push dword [esp + 0x14]
push 0x2b
push dword [esp + 0x30]
push 5
push dword [0x451b34]
push ecx
call fcn.00442050
add esp, 0x20
test eax, eax
js 0x422dd3
mov ecx, dword [esp + 0xc]
movzx eax, word [ecx]
shr eax, 1
mov ecx, dword [ecx + 4]
not eax
mov edx, 0xffffffff
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
inc eax
je 0x422b3c
mov esi, dword [ebp + 0xc]
movzx esi, word [esi + edx*2 + 2]
cmp si, word [ecx + edx*2 + 2]
jne 0x422dd3
inc edx
test si, si
jne 0x422b20
mov ecx, edi
call fcn.004400f0
cmp eax, 2
jne 0x422dd3
mov ecx, edi
push 0
push 0x30
lea eax, [esp + 0x38]
push eax
push 0
call fcn.0043ff10
test eax, eax
js 0x422dd3
mov ecx, edi
push 0
push 0
push 0x28
lea eax, [esp + 0x684]
push eax
push dword [esp + 0x4c]
push dword [esp + 0x4c]
call fcn.00440420
test eax, eax
js 0x422dd3
mov ecx, edi
push 0
push 0
push 0x80
lea eax, [esp + 0xcc]
push eax
push dword [esp + 0x6ac]
push dword [esp + 0x6ac]
call fcn.00440420
test eax, eax
js 0x422dd3
movzx eax, word [esp + 0x132]
push eax
call fcn.0043f6b0
add esp, 4
mov esi, eax
movzx eax, word [esp + 0x132]
mov ecx, edi
push 0
push 0
push eax
push esi
push dword [esp + 0x14c]
push dword [esp + 0x14c]
call fcn.00440420
test eax, eax
js 0x422dca
movzx edi, word [esp + 0x60]
mov dword [esp + 8], esi
mov eax, esi
test di, di
je 0x422c51
lea ecx, [esp + 0x60]
mov eax, dword [esp + 8]
mov edx, eax
jmp 0x422c2b
movzx edi, word [ecx]
test di, di
mov ebx, dword [ebp + 8]
je 0x422c51
movzx esi, word [edx]
test si, si
je 0x422dc3
add ecx, 2
add edx, 2
lea ebx, [eax + 2]
cmp si, di
je 0x422c49
mov eax, ebx
mov edx, ebx
je 0x422c20
lea ecx, [esp + 0x60]
jmp 0x422c20
test eax, eax
je 0x422dc3
mov edi, dword [ebp + 0x14]
mov ecx, edi
push 0
push 0
push 0x20
lea eax, [esp + 0x62c]
push eax
push dword [esp + 0x6a4]
push dword [esp + 0x6a4]
call fcn.00440420
test eax, eax
js 0x422dc6
mov eax, dword [esp + 0x690]
mov ecx, dword [esp + 0x694]
add eax, 0x10
mov dword [esp + 0x10], eax
adc ecx, 0
mov dword [esp + 0x20], ecx
mov eax, dword [esp + 0x630]
mov edx, dword [esp + 0x634]
mov dword [esp + 0x504], edx
mov dword [esp + 0x500], eax
jmp 0x422cf8
cmp cx, dx
je 0x422d99
push edi
call fcn.0043f730
add esp, 4
mov eax, dword [esp + 0x500]
mov edx, dword [esp + 0x504]
mov ecx, edx
xor ecx, dword [esp + 0x20]
mov esi, eax
xor esi, dword [esp + 0x10]
or esi, ecx
mov edi, dword [ebp + 0x14]
je 0x422dc6
mov ecx, edi
push 0
push 0
push 0x68
lea esi, [esp + 0x50c]
push esi
push edx
push eax
call fcn.00440420
test eax, eax
js 0x422dc6
movzx eax, word [esp + 0x55a]
push eax
call fcn.0043f6b0
add esp, 4
mov ecx, edi
mov edi, eax
movzx eax, word [esp + 0x55a]
push 0
push 0
push eax
push edi
push dword [esp + 0x574]
push dword [esp + 0x574]
call fcn.00440420
test eax, eax
js 0x422cca
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [ebp + 0x10]
movzx ecx, word [ecx + eax]
lea edx, [ecx - 0x41]
cmp dx, 0x1a
jae 0x422d73
or ecx, 0x20
movzx edx, word [edi + eax]
lea esi, [edx - 0x41]
cmp si, 0x1a
jae 0x422d83
or edx, 0x20
test cx, cx
je 0x422cc1
add eax, 2
cmp cx, dx
je 0x422d60
jmp 0x422cc1
mov eax, dword [esp + 0x530]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x534]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x540]
mov dword [esp + 0x14], eax
push edi
call fcn.0043f730
add esp, 4
mov edi, dword [ebp + 0x14]
mov esi, dword [esp + 8]
push esi
call fcn.0043f730
add esp, 4
push dword [esp + 0xc]
call fcn.0043f730
add esp, 4
mov eax, dword [esp + 0x1c]
or eax, dword [esp + 0x18]
je 0x422890
cmp dword [esp + 0x14], 0
je 0x422890
jmp 0x422e12
mov dword [esp + 0x14], 0
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
push dword [esp + 0x24]
call fcn.0043f730
add esp, 4
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x1c]
mov esi, dword [esp + 0x18]
mov eax, dword [ebp + 0x18]
mov dword [eax], edx
mov dword [eax + 4], esi
mov eax, dword [ebp + 0x1c]
mov dword [eax], ecx
mov ecx, edi
call fcn.0043fba0
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret